Python打破深度递归 - 2.7.8

时间:2014-10-23 14:33:14

标签: python recursion break

所以我有一个巨大的递归函数。在某些时候,它会找到一个结果,我需要它来停止所有功能。建议?

1 个答案:

答案 0 :(得分:2)

假设您无法重构代码,可以使用生成器来实现此目的。假设我们有以下代码:

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