У меня есть рекурсивная функция с массивом в качестве параметра, который сохраняет путь при перемещении сетки от (0, 0) до (x, y), и я должен пропускаются некоторые пункты, которые определены как «недоступный»Python - понять область действия переменной pass на рекурсивную функцию
я осуществить свою функцию как этот
unAvailablePoint = [(1, 2), (3, 0), (0, 3), (2, 3), (0, 1)]
def steppable(point):
return point not in unAvailablePoint
def travel(x, y, path, visited):
if x >= 0 and y >= 0 and steppable((x, y)):
if (x, y) in visited:
return visited[(x, y)]
success = False
if (x, y) == (0, 0) or travel(x-1, y, path, visited) or travel(x, y-1, path, visited):
path = path + [(x, y)] #the path will remain empty even after the recursive call have done some changes to the path
success = True
visited[(x, y)] = success
return success
return False
path = []
visited = {}
travel(3, 3, path, visited)
print(path) //[]
Как я распечатать path
в конце концов, это кажется path
еще пуст. Это не то, что я ожидал как начинающий Python. Любое предложение было бы полезно
Ну, ваша функция путешествия возвращает только 'True' /' False', поэтому изменения пути остаются в рамках этого этапа рекурсии. – Fejs
В Java это различно, что позволяет вам изменять параметр, когда идет рекурсивный шаг. По мере того, как обратные треки, вызывающий должен иметь возможность получить обновленное значение для параметра, который переходит на рекурсивный шаг детей? –