проблема рекурсии лабиринта python, ошибка рекурсии: максимальная глубина рекурсии превышена по сравнению с

#python #recursion #maze

#питон #рекурсия #Лабиринт

Вопрос:

Привет я надеюсь, что кто-нибудь сможет помочь мне с этим кодом, самый сложный код, который я написал, мне нужно использовать рекурсию для решения лабиринта, каждое значение должно быть выше, чем предыдущее. Вот примеры : примеры

idk почему, но есть проблема с печатью ответов на 5 вопросов и ответов

 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 lt; maze[index_y][index_x]:  final.append(lastvalue_list)  if last_value gt;= 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],[]))

Ответ №1:

 if last_value gt;= maze[index_y][index_x] and (index_x !=0 or index_y !=0):  return False  

Эта строка может создать бесконечный цикл, если вы не можете найти путь с правой-gt;правой или правой-gt;gt;вниз, следующий шаг-вправо — gt;gt;gt;влево, обратно к (0,0), который никогда не будет считаться недействительным, в результате чего цикл будет просто повторяться, все глубже и глубже погружаясь в рекурсивные вызовы, пока вы не достигнете предела.

if last_value gt;= maze[index_y][index_x] должно быть достаточно, если вы исправите остальную часть функции

установите last_value для начала отрицательное число, если вы не хотите, чтобы оно было истинным на первой итерации.