
实际应用中遇到了一个python递归调用的问题,报错如下:
RuntimeError: maximum recursion depth exceeded while calling a Python object网上找了一下,原来Python确实有递归次数限制,默认最大次数为1000
在正常的python里:
In [1]: sys.setrecursionlimit? Type: builtin_function_or_method Base Class: <type 'builtin_function_or_method'> String Form: <built-in function setrecursionlimit> namespace: Interactive Docstring: setrecursionlimit(n) Set the maximum depth of the Python interpreter stack to n. This limit prevents infinite recursion from causing an overflow of the C stack and crashing Python. The highest possible limit is platform-dependent. 那么如何进行判断处理呢?下面给出两段代码,供参考。
代码如下:
'''遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和pdf电子书!'''def recursion(n): if(n <= 0): return print n recursion(n - 1) if __name__ == "__main__": recursion(1000)当在我自己的机器运行以上代码时,发现最多能打印到998,然后就会抛出 “RuntimeError: maximum recursion depth exceeded” 的错误了。 嘿,还真有限制。但转念一想,python不会这么弱吧。经过一番查找,发现这是python专门设置的一种机制用来防止无限递归造成Python溢出崩溃, 最大递归次数是可以重新调整的。 (http://docs.python.org/2/library/sys.HTML#sys.setrecursionlimit),修改代码如下:
import syssys.setrecursionlimit(1500) # set the maximum depth as 1500def recursion(n): if(n <= 0): return print n recursion(n - 1) if __name__ == "__main__": recursion(1200)再次运行,顺利通过!!!
总结以上是内存溢出为你收集整理的Python中递归的最大次数全部内容,希望文章能够帮你解决Python中递归的最大次数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)