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

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

Python中递归的最大次数的更多相关文章

  1. python中递归调用

    递归一个通俗的解释就是,在函数中调用函数本身:伪代码如下: In [31]: def fun(): ....: fun() # 这个递归没有任何作用,只是为了说明什么是递归 递归(Recursion) ...

  2. python中的迭代与递归

    遇到一个情况,需要进行递归操作,但是呢递归次数非常大,有一万多次.先不说一万多次递归,原来的测试代码是java的,没装jdk和编译环境,还是用python吧 先看下原本的java代码: public ...

  3. python中的内置函数,递归,递归文件显示(二),二分法

    1.部分内置函数 repr()显示出字符串的官方表示形式,返回一个对象的string形式 # repr 就是原封不动的输出, 引号和转义字符都不起作用 print(repr('大家好,\n \t我叫周 ...

  4. python中的内置函数(2)

    一.lambda匿名函数定义:为了解决一些简单的需求而设计的一句话函数例子:计算n的n次方 def func(n):#正常的写法 return n**2 f=lambda n:n**2 这里的lamb ...

  5. 2018.8.15 python 中的sorted()、filter()、map()函数

    主要内容: 1.lambda匿名函数 2.sorted() 3.filter() 4.map() 5.递归函数 一. lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 ...

  6. python中的递归问题,求圆周率

    以上面一个公式为例: import numpy as np def getPi(n): if n == 0: return np.power(-1,n)*(1.0/(2*n+1)) else: ret ...

  7. Python解决 从1到n整数中1出现的次数

    最近在看<剑指Offer>,面试题32的题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1.10.11和12,1一共出 ...

  8. Python统计日志中每个IP出现次数

    介绍了Python统计日志中每个IP出现次数的方法,实例分析了Python基于正则表达式解析日志文件的相关技巧,需要的朋友可以参考下 本脚本可用于多种日志类型 #-*- coding:utf-8 -* ...

  9. 使用python脚本实现统计日志文件中的ip访问次数

    使用python脚本实现统计日志文件中的ip访问次数,注意此脚本只适用ip在每行开头的日志文件,需要的朋友可以参考下 适用的日志格式: 106.45.185.214 - - [06/Aug/2014: ...

随机推荐

  1. C语言_第一章

    1. 计算机能直接识别和接受的二进制代码称为     机器指令——>(集合) 机器语言. 2. 输出C #include<stdio.h> int main(){ printf(&q ...

  2. LINUX内核参数FS与VM相关

    文件系统相关 fs.aio-nr = 0 当前aio请求数 fs.aio-max-nr = 1048576 最大允许的aio请求数 fs.file-nr = 3456 0 94159 已分配的文件ha ...

  3. postcss-px2rem

    1.安装 npm install gulp-postcss --save-dev 2.gulp var gulp = require('gulp'); var postcss = require('g ...

  4. 【Alpha】Daily Scrum Meeting总结

    一.项目预期计划和现实进展 项目预期计划 现实进展 登陆 完成 使用菜单 完成 查看自己的信息 完成(额外完成可修改) 完成能用的界面 完成(额外美化) 可以导入导出表格 导入表格完成,导出未完成 教 ...

  5. log4j mongoDB配置

    log4j.rootCategory=INFO, stdout log4j.appender.stdout=org.springframework.data.document.mongodb.log4 ...

  6. 基于jquery上的轻量级《数据模板解析》插件

    1.先上一个栗子. <!doctype html> <html lang="en"> <head> <meta charset=" ...

  7. bug2--工程性错误

    1问题场景:图片上传失败,打印log.http header 有数据.不报错,通过流写入文件后,文件被创建,但是大小为0kb. 执行:df -h 发现linux的磁盘 used 100%. 原来是没有 ...

  8. FAT32文件系统

  9. apidoc

    1.安装node http://nodejs.cn/download/ 下载二进制包,解压,配置环境 export NODE_HOME=/usr/local/nodeexport PATH=$NODE ...

  10. Grandle全局变量定义及引用

    在Project的build.gradle脚本中定义一些全局变量 ext { compileSdkVersion = 21 buildToolsVersion = "24.0.1" ...