【发布时间】:2014-01-04 21:54:06
【问题描述】:
我有一个寻找欧拉路径的递归函数。我不认为函数的定义是相关的(但如果有人这么认为,我也会粘贴它)。
问题是当我使用大图运行函数时,我收到以下众所周知的错误:RuntimeError: maximum recursion depth exceeded in cmp
即使没有上述问题,我知道我需要使用以下命令增加递归限制
import sys
sys.setrecursionlimit(5000)
问题是,无论我使用什么数字,我都会遇到最大递归错误,或者我的程序只是停止,屏幕上没有输出,但是:进程以退出代码 -1073741571 结束。我试图用谷歌搜索这段代码,我能找到的唯一问题是 Ruby 中的问题。知道如何克服这个问题。
如果这是相关的,我使用的是 Windows 8 64 位,我有足够的 RAM,我有 64 位 python。
由于某种原因,这个问题最近受到了一些关注,我想强调我无法找到问题的解决方案。在绝望地尝试解决问题后,我放弃了并在没有递归的情况下重写了它。这也很烦人,但我花在重写整个算法上的时间比我花在研究这个问题上的时间要少得多。我还想提一下,我没有以前的递归代码,所以我将无法复制问题。
【问题讨论】:
-
您的程序可能需要一些优化?
-
CPython 没有优化尾递归,所以尽量避免使用到这种程度。
-
图中有多少条边?
-
@thefourtheye 那里没有什么可以优化的。唯一需要优化的是将递归更改为 while 循环 :-)
-
可能您正在尝试将限制设置为大于环境允许的范围。这会导致 setrecursionlimit '不适合你'。
标签: python recursion error-code