Возврат результата рекурсивной функции

Рейтинг: 0Ответов: 0Опубликовано: 27.07.2023

Решаю учебную задачу в курсе ООП.

Функция 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)

Ссылка на файл

Ответы

Ответов пока нет.