0

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

4

1 回答 1

2

Python 解释器的堆栈空间不足。像在相同情况下的任何其他进程一样,它被操作系统杀死。

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

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

于 2013-04-08T14:35:27.260 回答