Я пытаюсь найти самую длинную последовательность символов в матрице.Я действительно новичок в Python, и я думаю, что проблема в том, что рекурсивные методы Python не совпадают с C / C ++ / Java и т. Д. Вот мой код, теперь ... Знаете ли вы другой способ сделать это, если рекурсияВ Python нет ничего, или вы можете исправить мой код, чтобы он работал в Python?(проблема в том, что длина и посещаемая матрица не обновляются во время рекурсии).
def get_current_score(self, i, j, char, viz, leng):
leng = 0
self.viz[i][j] = True
if (self.out_of_span(i - 1, j) == False and self.viz[i-1][j] == False and self.matrix[i - 1][j] == char):
self.viz[i - 1][j] = True
return leng + self.get_current_score(i - 1, j, char, self.viz, leng)
if (self.out_of_span(i - 1, j +1) == False and self.viz[i-1][j+1] == False and self.matrix[i - 1][j + 1] == char):
self.viz[i - 1][j + 1] = True
return leng + self.get_current_score(i - 1, j + 1, char, self.viz, leng)
if (self.out_of_span(i - 1, j - 1) == False and self.viz[i-1][j-1] == False and self.matrix[i - 1][j - 1] == char):
self.viz[i - 1][j - 1] = True
return leng + self.get_current_score(i - 1, j - 1, char, self.viz, leng)
if (self.out_of_span(i, j - 1) == False and self.viz[i][j-1] == False and self.matrix[i][j - 1] == char):
self.viz[i][j - 1] = True
return leng + self.get_current_score(i, j - 1, char, self.viz, leng)
if ( self.out_of_span(i, j + 1) == False and self.viz[i][j+1] == False and self.matrix[i][j + 1] == char):
self.viz[i][j + 1] = True
return leng + self.get_current_score(i, j + 1, char, self.viz, leng)
if ( self.out_of_span(i + 1, j) == False and self.viz[i+1][j] == False and self.matrix[i + 1][j] == char):
self.viz[i + 1][j] = True
return leng + self.get_current_score(i + 1, j, char, self.viz, leng)
if (self.out_of_span(i + 1, j - 1) == False and self.viz[i+1][j-1] == False and self.matrix[i + 1][j - 1] == char):
self.viz[i + 1][j - 1] = True
return leng + self.get_current_score(i + 1, j - 1, char, self.viz, leng)
if (self.out_of_span(i + 1, j + 1) == False and self.viz[i+1][j+1] == False and self.matrix[i + 1][j + 1] == char):
self.viz[i + 1][j + 1] = True
return leng + self.get_current_score(i + 1, j + 1, char, self.viz, leng)
return 1 + leng
def add(self, index):
[...]
# scor
print('\n --------------\n')
for i in range(self.maxh, self.nr):
for j in range(self.span[0], self.span[1]+1):
if(self.player1 == False and self.matrix[i][j] == 'X'):
self.score1 = max(self.score1, self.get_current_score(i, j, 'X', self.viz, self.score1))
self.viz[i][j] = True
#self.score1 -= 1
else:
if(self.player1 == True and self.matrix[i][j] == 'O'):
self.score2 = max(self.score2, self.get_current_score(i, j, 'O', self.viz, self.score1))
self.viz[i][j] = True
self.reset_viz()
self.print_matrix()