python中的分段错误

时间:2013-04-08 14:31:57

标签: python

如何在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中接收分段错误。

1 个答案:

答案 0 :(得分:2)

Python解释器耗尽了堆栈空间。与处于相同情况的任何其他进程一样,它会被操作系统杀死。

您可以尝试增加操作系统堆栈大小限制(ulimit -c)。

更好的方法可能是重写代码,使其不需要这么深的递归(您的特定示例可以简单地转换为迭代)。