python maze recursion problem, RecursionError: maximum recursion depth exceeded in comparison
python maze recursion problem, RecursionError: maximum recursion depth exceeded in comparison
你好我希望有人能帮我写这段代码,我写过的最难的代码,我需要使用递归来解决迷宫,每个值都应该比前一个高这些是例子:
examples
我知道为什么但是打印 5 的答案时出现问题 questions and answers
def solve_maze_monotonic_helper(maze,index_x,index_y,last_value,lastvalue_list,final):
if index_y == -1 or index_y ==len(maze) or index_x == -1 or index_x == len(maze[0]):
return False
if last_value < maze[index_y][index_x]:
final.append(lastvalue_list)
if last_value >= maze[index_y][index_x] and (index_x !=0 or index_y !=0):
return False
if (index_y == len(maze)-1) and (index_x == len(maze[0])-1):
final.append([index_y,index_x])
return final
difference_y = index_y - lastvalue_list[0]
difference_x = index_x - lastvalue_list[1]
last_value =maze[index_y][index_x]
lastvalue_list = [index_y,index_x]
right,down,left,up =True,True,True,True
right = solve_maze_monotonic_helper(maze,index_x+1,index_y,last_value,lastvalue_list,final)
if right == False:
down = solve_maze_monotonic_helper(maze,index_x,index_y+1,last_value,lastvalue_list,final)
if down == False:
left = solve_maze_monotonic_helper(maze,index_x-1,index_y,last_value,lastvalue_list,final)
if left == False:
up = solve_maze_monotonic_helper(maze,index_x,index_y-1,last_value,lastvalue_list,final)
if up == False:
final.pop(len(final)-1)
return False
return final
打印(solve_maze_monotonic_helper([[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6 , 6]],0,0,1,[0,0],[]))
if last_value >= maze[index_y][index_x] and (index_x !=0 or index_y !=0):
return False
这条线可以创建一个无限循环,如果你找不到右->右或右->下的路径,下一步是右->左,回到(0,0)永远不会被认为是无效的,导致循环不断重复,越来越深入递归调用,直到达到极限。
if last_value >= maze[index_y][index_x]
如果你修复了函数的其余部分就足够了
如果您不希望它在第一次迭代时为真,请将 last_value
设置为负数作为开始。
你好我希望有人能帮我写这段代码,我写过的最难的代码,我需要使用递归来解决迷宫,每个值都应该比前一个高这些是例子: examples
我知道为什么但是打印 5 的答案时出现问题 questions and answers
def solve_maze_monotonic_helper(maze,index_x,index_y,last_value,lastvalue_list,final):
if index_y == -1 or index_y ==len(maze) or index_x == -1 or index_x == len(maze[0]):
return False
if last_value < maze[index_y][index_x]:
final.append(lastvalue_list)
if last_value >= maze[index_y][index_x] and (index_x !=0 or index_y !=0):
return False
if (index_y == len(maze)-1) and (index_x == len(maze[0])-1):
final.append([index_y,index_x])
return final
difference_y = index_y - lastvalue_list[0]
difference_x = index_x - lastvalue_list[1]
last_value =maze[index_y][index_x]
lastvalue_list = [index_y,index_x]
right,down,left,up =True,True,True,True
right = solve_maze_monotonic_helper(maze,index_x+1,index_y,last_value,lastvalue_list,final)
if right == False:
down = solve_maze_monotonic_helper(maze,index_x,index_y+1,last_value,lastvalue_list,final)
if down == False:
left = solve_maze_monotonic_helper(maze,index_x-1,index_y,last_value,lastvalue_list,final)
if left == False:
up = solve_maze_monotonic_helper(maze,index_x,index_y-1,last_value,lastvalue_list,final)
if up == False:
final.pop(len(final)-1)
return False
return final
打印(solve_maze_monotonic_helper([[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6 , 6]],0,0,1,[0,0],[]))
if last_value >= maze[index_y][index_x] and (index_x !=0 or index_y !=0):
return False
这条线可以创建一个无限循环,如果你找不到右->右或右->下的路径,下一步是右->左,回到(0,0)永远不会被认为是无效的,导致循环不断重复,越来越深入递归调用,直到达到极限。
if last_value >= maze[index_y][index_x]
如果你修复了函数的其余部分就足够了
如果您不希望它在第一次迭代时为真,请将 last_value
设置为负数作为开始。