Python中断深度递归-2.7.8
所以我有一个巨大的递归函数。在某个时刻,它会找到一个结果,我需要它来停止所有函数。建议?假设您无法重构代码,您可以使用生成器来实现这一点。假设我们有以下代码:Python中断深度递归-2.7.8,python,recursion,break,Python,Recursion,Break,所以我有一个巨大的递归函数。在某个时刻,它会找到一个结果,我需要它来停止所有函数。建议?假设您无法重构代码,您可以使用生成器来实现这一点。假设我们有以下代码: 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 prin
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)
现在,您想要的是得到3并停止,因此我们只获取第一个值:
>>> print(g(0).__iter__().next())
g before 0
g before 1
g before 2
g before 3
3
建议:给我们看看你的代码。我不能给你全部的代码,它太大了。难道没有办法打破所有的递归吗?然后告诉我们代码遵循的一般模式。当然,您可以在某个地方返回最终结果或某个“未找到”类型,比如None,然后在某个地方执行递归调用。可能您必须检查递归调用的结果,然后返回结果或重试。但是如果不知道你的函数看起来是什么样子的话,这是不可能的。也许把它重构成更小的函数使它更紧凑是个好主意?好吧,那么函数会找到一个特殊的字符串,在这个字符串中它会找到很多其他的字符串。在某个点上,它找到了正确的字符串,我只是做了一个简单的if string==rightstring,然后我找到了它。这就是它目前所做的,但在找到正确的字符串后,它会继续进行。我想终止函数的所有实例。这可能吗?
>>> print(g(0).__iter__().next())
g before 0
g before 1
g before 2
g before 3
3