执行一个Python递归程序
报错了:
Process finished with exit code -1073741571 (0xC00000FD)
查看问题的根源在于递归导致的栈溢出,环境windows10、python3.6-64bit。
测试代码如下:
import sys
sys.setrecursionlimit(100000)
def foo(n):
print(n)
n += 1
foo(n)
if __name__ == '__main__':
foo(1)
执行结果:
改造代码:
import sys
import types
sys.setrecursionlimit(100000)
def foo(n):
print(n)
if n==100000:
yield 1
else:
n += 1
yield foo(n)
def tramp(gen, arg):
g = gen(arg)
while isinstance(g, types.GeneratorType):
g=g.__next__()
return g
if __name__ == '__main__':
tramp(foo, 0)
成功!
转载:https://blog.csdn.net/ztf312/article/details/81296772