【发布时间】:2016-07-04 07:16:49
【问题描述】:
我有一个递归调用的函数。当我运行它时,我收到错误“调用 Python 对象时超出最大递归深度”
如何增加mac上的限制?如果我使用以下内容,我会收到错误 "cannot increase the limit on mac"
resource.setrlimit(resource.RLIMIT_STACK, (2**24,-1))
sys.setrecursionlimit(10**6)
【问题讨论】:
-
这可能是Python limitation,与 Mac 无关。
-
您是否考虑过重写递归以实现对数堆栈增长而不是线性堆栈增长的可能性?例如,可以通过将到目前为止的最大值与列表其余部分的最大值进行比较来递归地设置列表的最大值,但堆栈将随着列表的大小线性增长。更好的解决方案是找到列表前半部分和列表后半部分的最大值,并取两者中较大的一个,这不会减少工作量,但会以列表大小的对数方式增长堆栈.也许您的问题可以类似地重铸。
-
有趣的@pjs,你有这样的例子吗?
-
我正在寻找答案,但它真的很长,等待......
-
@Goodies Yes, I do。但是如果没有看到代码,就不可能说同样的方法是否适用于 nbrugir。
标签: python macos python-3.x recursion