Я не знаю, почему строка if len(stack)==0: return 0
не работает.
Элементы списка графиков представляют узлы, например: [2, 6]
означает, что узел со значением 2 -> узел со значением6, аналогично узел со значением 4 связан с узлами со значением 7, 8, 9 (три узла-потомка).
Интересно, существует ли маршрут от goal[0]
до goal[1]
или нет.
В моем примере маршрут отсутствует.
graph_list=[[2, 6], [4, 7], [5, 7], [1, 5], [2, 9], [4, 9], [4, 8], [5, 3], [7, 8]]
goal=[1, 9]
stack=[goal[0],]
def check_func(d_list, goal):
if len(stack)==0:
return 0
for node in d_list:
if node[0]==stack[-1]:
stack.append(node[1])
d_list.remove(node)
check_func(d_list, goal)
if stack[-1]==goal[1]:
return 1
else:
stack.pop(-1)
print(stack)
check_func(d_list, goal)
После некоторых итераций в следующей строке возникает ошибка.
если стек [-1] == цель [1]:
IndexError: индекс списка вне диапазона
Я не понимаю, почему возникает эта ошибка,Я думаю, что первая строка кода функции предотвращает ошибку.