zoukankan      html  css  js  c++  java
  • Python中递归的最大次数

    实际应用中遇到了一个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. 

    那么如何进行判断处理呢?下面给出两段代码,供参考。

    代码如下:

    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 sys
    sys.setrecursionlimit(1500) # set the maximum depth as 1500

    def recursion(n): 
        if(n <= 0): 
            return 
        print n 
        recursion(n - 1) 

    if __name__ == "__main__":
        recursion(1200)

    再次运行,顺利通过!!!

  • 相关阅读:
    基于协同过滤的个性化Web推荐
    自动推荐系统效果为什么不好
    基于模糊聚类和协同过滤的混合推荐系统
    海量数据处理之蓄水池抽样算法
    心灵启发--不羡慕别人的生活
    ubuntu安装软件整理
    Hadoop系列
    网页返回错误编号含义整理
    找出单链表的中间位置指针
    【python爬虫】根据查询词爬取网站返回结果
  • 原文地址:https://www.cnblogs.com/wozijisun/p/5642540.html
Copyright © 2011-2022 走看看