注册
登录
查看:455 | 回复:5
名侦探
想用递归计算1累加到10000的值,结果报错了
发表于 2023/5/12 13:35:19
楼主

想用递归计算1累加到10000的值,结果报错了


RecursionError: maximum recursion depth exceeded in comparison

小何
发表于 2023/5/12 13:36:09
沙发

你的递归很奇怪,试试我这个


image.png


即使设置了递归上限,最高也只能到2000,超过2000就报错了

皮外
发表于 2023/5/12 13:39:54
板凳

首先,这句错误提示翻译为中文的意思是:

递归错误:比较中超过了最大递归深度

意思就是你的递归超过了Python内部的次数限制,这是为了防止内存溢出。

皮外
最佳答案 发表于 2023/5/12 13:43:52
4楼

该限制最大值可以通过:

sys.getrecursionlimit()

查询。

如果你的程序需要使用到更大的递归次数,则需要通过:

sys.setrecursionlimit(limit)

设置。


皮外
发表于 2023/5/12 13:48:30
5楼

该方法的意思是:

将 Python 解释器堆栈的最大深度设置为参数指定的值。此限制可防止无限递归导致 C 堆栈溢出和 Python 崩溃。

可能的最高限制取决于平台。当用户具有需要深度递归的程序和支持更高限制的平台时,可能需要将限制设置得更高。

这应该小心完成,因为过高的限制可能会导致崩溃。

如果在当前递归深度下的新限制过低, 将引发递归错误异常。


名侦探
发表于 2023/5/12 13:52:04
6楼

谢谢大佬

立即注册站大爷用户,免费试用全部产品
立即注册站大爷用户,免费试用全部产品