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 设置为负数作为开始。