Python中递归的最大次数

Python中递归的最大次数,第1张

概述实际应用中遇到了一个python递归调用的问题,报错如下:RuntimeError:maximumrecursiondepthexceededwhilecallingaPythonobject网上找了一下,原来Python确实有递归次数限制,默认最大次数为1000在正常的python里:In[1]:sys.setrecursionlimit?Type:builtin_funct

实际应用中遇到了一个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中递归的最大次数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1188963.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存