gpt4 book ai didi

python - 函数在递归大数时抛出错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:46 25 4
gpt4 key购买 nike

我正在使用 Python 2.7.3 并具有此功能:

def f(n):
if n == 0:
return 0
else:
return (n % 3 == 0 or n % 5 == 0) * n + f(n - 1)
f(999)

在 f(993) 之前有效,但在 f(999) 之前无效。当我尝试时,不断出现无数错误。我不明白。谁能告诉我哪里出了问题?

编辑: 谢谢大家的回答。我想我最好在 python 中使用迭代。

最佳答案

在 Python 中,递归仅限于 999 次递归调用。

如果你真的想改变递归调用的限制,你可以使用sys.setrecursionlimit(limit) .

例如:

sys.setrecursionlimit(2000)

但是,更改递归限制可能危险。堆栈帧可能会变得太大。

From the doc:

This limit prevents infinite recursion from causing an overflow of the C stack and crashing Python. It can be set by setrecursionlimit().

您可以做的是:

就像@Dan D. 说的,你最好迭代地重写你的代码。 Here is the reason why you should .

关于python - 函数在递归大数时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com