@bibliophile

Как остановить рекурсивную функцию и все ее подвызовы?

Допустим я сделал рекурсивную функцию, она вызвала себя три раза, предположим на третий раз я нашел те данные которые искал, теперь я хочу обрубить все-все подвызовы которые сделала моя первая функция, то есть такой глобальный return на начальную функцию. Задача связана с графом, мне нужно найти есть ли путь из точки А к точке B, если он есть то нужно вывести на экран Yes, если нет то нужно вывести No, я написал функцию и сказал если есть путь, то измени проверочную переменную(с 0 на 1), а потом каждый раз когда функция вызывается я делаю проверку, если проверочная переменная 1, то я выхожу из функции. Но когда функция вызвала себя кучу раз, то все эти дополнительные проверки берут уйму времени, было бы отлично если бы функция полностью остановилась со своим корнем, если она нашла путь.
Может быть можно как то обозначить функцию дополнительным именем, что то в стиле process X, и если я нахожу путь я говорю: kill process X. Кто то встречался с подобными вещами?
  • Вопрос задан
  • 2115 просмотров
Решения вопроса 1
longclaps
@longclaps
Ну ты далеко зашел, почти что первопроходец )
class Catapult(Exception):
    pass

def recursive(x):
    if not x:
        raise Catapult
    recursive(x - 1)

try:
    recursive(10)
except Catapult:
    print("ну слава богу")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы