我一直在试着用回溯来解决一个迷宫。代码使用多个递归:
def solve_maze(x,y):
if maze[x][y] == 'G': #checking if we've reached the target
solution[x][y] = 1
return True
if x>=0 and y>=0 and x<length and y<width and solution[x][y] == 0 and maze[x][y] == ' ':
solution[x][y] = 1
if solve_maze(x+1, y):
return True
if solve_maze(x, y+1):
return True
if solve_maze(x-1, y):
return True
if solve_maze(x, y-1):
return True
solution[x][y] = 0
return False
当我第一次执行这个程序时,出现了“超过递归限制”的错误。为了解决这个问题,我增加了限制:
sys.setrecursionlimit(10000)
现在我运行了程序,Python崩溃了。这是怎么回事?我该如何解决这个问题呢?迷宫不是很大。尺寸为10*9:
maze = [['#'] * 10,
['#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#', ' ', '#', ' ', '#', ' ', '#', ' ', ' ', '#'],
['#', ' ', '#', ' ', '#', '#', '#', ' ', '#', '#'],
['#', ' ', '#', '#', '#', '*', '#', ' ', ' ', '#'],
['#', ' ', '#', ' ', ' ', ' ', '#', '#', ' ', '#'],
['#', ' ', '#', ' ', '#', '#', '#', '#', ' ', '#'],
['G', ' ', '#', ' ', ' ', ' ', ' ', ' ', ' ', '#'],
['#'] * 10]
*这是后来添加的:在solve_maze定义的末尾有一段代码:
if solve_maze(x, y):
for i in solution:
print(i)
else:
print('no solution')
我注意到,通过删除它,该程序的工作fine.Still没有线索为什么
https://stackoverflow.com/questions/50593248
复制相似问题