Возврат результата рекурсивной функции
Решаю учебную задачу в курсе ООП.
Функция recurs должна проходить по вершинам графа и при сочетании условии возвращать машруты до точки stop. В Pycharm в режиме дебаггинга я вижу, что маршруты формируются, срабатывает блок else -> return. Но далее при обращении к переменной prom функции find_path возникает ошибка. Пробовал делать, заменив return на yield, но тогда не работает рекурсия.
Помогите, пожалуйста, разобраться с задачей.
def recurs(self, items, stop, path=[]):
for item in items:
path.append(item)
all_smej_one_incl_item = list()
for i in [x for row in [(val.v1, val.v2) for val in item.links] for x in row]:
if i not in all_smej_one_incl_item:
all_smej_one_incl_item.append(i)
all_smej_next = [j for j in all_smej_one_incl_item if j not in path]
if stop not in all_smej_next:
self.recurs(all_smej_next, stop)
print(f'im here: {item}')
correct_route = path + [stop]
print(correct_route)
path.remove(item)
if stop in all_smej_next:
return correct_route
def find_path(self, start_v, stop_v):
prom = self.recurs([start_v], stop_v)
a = list(prom)
print(a)
Источник: Stack Overflow на русском