如何在python 2.7.3中运行以下程序
import sys
sys.setrecursionlimit(2 ** 20)
def f(x):
if (x==0): return 0
else: return f(x-1)+1
print f(200000)
此代码在Ubuntu中接收分段错误。
答案 0 :(得分:2)
Python解释器耗尽了堆栈空间。与处于相同情况的任何其他进程一样,它会被操作系统杀死。
您可以尝试增加操作系统堆栈大小限制(ulimit -c
)。
更好的方法可能是重写代码,使其不需要这么深的递归(您的特定示例可以简单地转换为迭代)。