Как остановить рекурсивную функцию и все ее подвызовы?
Допустим я сделал рекурсивную функцию, она вызвала себя три раза, предположим на третий раз я нашел те данные которые искал, теперь я хочу обрубить все-все подвызовы которые сделала моя первая функция, то есть такой глобальный return на начальную функцию. Задача связана с графом, мне нужно найти есть ли путь из точки А к точке B, если он есть то нужно вывести на экран Yes, если нет то нужно вывести No, я написал функцию и сказал если есть путь, то измени проверочную переменную(с 0 на 1), а потом каждый раз когда функция вызывается я делаю проверку, если проверочная переменная 1, то я выхожу из функции. Но когда функция вызвала себя кучу раз, то все эти дополнительные проверки берут уйму времени, было бы отлично если бы функция полностью остановилась со своим корнем, если она нашла путь.
Может быть можно как то обозначить функцию дополнительным именем, что то в стиле process X, и если я нахожу путь я говорю: kill process X. Кто то встречался с подобными вещами?
вы представляете как происходит вызов функции ? в стэк записывается адрес откуда вызвали , куча сохранённых переменных (регистров) и т.д ... при возврате всё должно восстанавливаться , просто так, по щелчку пальцев, оттуда не выбраться =)
Алексей С., представляю, но не достаточно хорошо, если бы представлял достаточно хорошо, то во первых не писал бы сюда вопрос, а во вторых додумался бы до того решения которое мне посоветовал longclaps . Ну и, как мне кажется, очень важно помнить, что ты можешь не знать чего то(в моем случае это очень актуально) и стоит спросить других людей, возможно они знают)
Это отличная штука, я прям в восторге, сейчас посидел поигрался и что ты думаешь?Я прикрутил ее к своему обходу графа))Спасибо тебе, отзывчивый человек)