-1
Итак, у меня есть огромная рекурсивная функция. В какой-то момент он находит результат, и мне нужно, чтобы он остановил все функции. Предложения?Python break глубокая рекурсия - 2.7.8
Итак, у меня есть огромная рекурсивная функция. В какой-то момент он находит результат, и мне нужно, чтобы он остановил все функции. Предложения?Python break глубокая рекурсия - 2.7.8
Предполагая, что вы не можете реорганизовать свой код, вы можете использовать генераторы для достижения этого. Допустим, мы имеем следующий код:
from __future__ import print_function
def g(n):
print("g before", n)
if n < 3:
for i in g(n+1):
yield i
else:
yield n
print("g after", n)
Нормальное исполнение будет:
>> for i in g(0):
... print(i)
...
g before 0
g before 1
g before 2
g before 3
3
g after 3
g after 2
g after 1
g after 0
Теперь то, что вы хотите, чтобы получить 3 и остановить прямо там, так что мы просто принести первое значение:
>>> print(g(0).__iter__().next())
g before 0
g before 1
g before 2
g before 3
3
Предложение: Показать код. –
Я не могу показать вам весь код, он огромен. Разве нет способа нарушить рекурсию? –
Затем покажите нам общий шаблон, следующий за кодом. Разумеется, где-то вы возвращаете либо конечный результат, либо какой-то «не найденный» тип, например None, и где-то вы делаете рекурсивный вызов. Вероятно, вам нужно проверить результат рекурсивного вызова и либо вернуть результат, либо повторить попытку. Но, не понимая, как выглядит ваша функция, невозможно помочь. –