`

有关Python中递归的最大次数

阅读更多
看到一个同学问递归最多达到多少次,因为在他跑的时候,次数有时多有时少,以前没有想过这个问题。那就自己动手在验证验证, 代码如下:
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溢出崩溃, 最大递归次数是可以重新调整的。 参考官方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中最大递归深度值的探讨

    在Python 3.6.5中,实际的最大递归深度可能提高到3213,而不会立即引发`RecursionError`,但可能会出现其他问题,如程序终止的提示。而在Python 2.7.10中,相同的设置可能会允许递归深度达到4484。 需要注意的是,...

    python递归函数求n的阶乘,优缺点及递归次数设置方式

    在Python中,递归函数主要用于处理那些可以通过简化版本的自身问题来解决的复杂问题。本文将详细探讨递归函数的概念、应用以及其在计算阶乘时的具体实现,同时讨论其优缺点以及如何设置递归深度。 首先,让我们来看...

    Python递归及尾递归优化操作实例分析

    Python中的递归是一种强大的编程技巧,它允许函数在解决问题时调用自身。递归的核心在于将复杂问题分解为较小的相同或相似子问题,直到达到基本情况,即所谓的递归出口。在递归过程中,每个子问题都通过递归调用来...

    剑指offer前10题python代码

    Python实现中,可以使用两个变量交替记录最大值和出现次数,最终得到的即为目标元素。 2. **两个数组的交集**:题目要求找到两个数组的交集,Python中可以利用集合操作来高效解决。将一个数组转化为集合,然后遍历...

    采用递归算法编程实现下列分形树

    2. 终止条件:确定何时停止递归,可能是达到最大迭代次数或树的形状达到预期复杂度。 3. 递归函数:定义绘制分支的函数,包括计算新分支的位置和角度,以及调用自身来绘制子分支。 4. 更新和绘制:在每次递归调用后...

    python基础题目练习(附答案).pdf

    2. **条件语句(if...elif...else)**:在 `fun` 函数中,通过比较 `maxt` 与 `t2`、`t3`、`t4` 来确定最大的间隔时间,这是条件语句的应用,用于找出最大值。 3. **循环(for loop)**:在 `fun` 函数中,使用了 `...

    苏州大学Python程序设计2018第一次考试试题及答案

    4. 统计某个给定范围[m,n]内所有非负整数中,数字 2 出现的次数。 该题目考查了Python语言的数据处理能力,要求考生编写一个函数来统计给定范围内的数字 2 的出现次数,并返回结果值。 5. 求一个正整数的位数、...

    剑指offer 66编程题Python

    该函数的使用语法为str.replace(old, new[, max]),其中max参数表示替换的最大次数。如果省略,则默认替换所有的匹配项。该函数非常适用于处理字符串替换任务,简洁且执行效率高。 3. Python链表操作及反转...

    《PythonCook》

    书中介绍了如何进行序列解压赋值给多个变量、保留最后N个元素、查找最大或最小的N个元素、实现优先级队列、字典中键映射多个值、字典排序、字典的运算、查找两字典的相同点、删除序列相同元素并保持顺序、命名切片、...

    《Python Cookbook》第三版中文

    《Python Cookbook》第三版是面向Python中高级用户的一本实用指导书籍,它提供了大量的编程解决方案,涉及到数据结构、字符串和文本处理、数字和日期处理、迭代器与生成器的应用、文件与输入输出等Python编程中的...

    排序算法之Python

    在Python中,冒泡排序通常通过两层循环实现,外层循环控制比较次数,内层循环进行相邻元素的比较和交换。 二、选择排序(Selection Sort) 选择排序的思想是在未排序的序列中找到最小(或最大)元素,放到已排序...

    Python3高级教程

    1.4 查找最大或最小的N个元素:描述如何利用Python内置函数快速找出数据集中最大或最小的N个元素。 1.5 实现一个优先级队列:阐述如何使用数据结构来模拟优先级队列的执行逻辑。 1.6 字典中的键映射多个值:介绍如何...

    排序算法_python_

    在Python中,冒泡排序的实现通常涉及两个嵌套循环,外层循环控制遍历次数,内层循环则负责比较和交换元素。虽然效率较低,但它的逻辑简单,适合教学用途。 2. 插入排序(Insertion Sort): 插入排序的工作原理是将...

    python刷题day3.rar

    - Python中的递归需要注意防止栈溢出,合理设置递归基(停止条件)。 7. **生成有效括号组合**: - 这个问题涉及到字符串生成和回溯算法。有效括号组合指的是符合括号匹配规则的字符串,例如"()"、"()()"等。 - ...

    《Python+Cookbook》第三版中文

    12. **序列中出现次数最多的元素**:讲解了如何找出序列中最常见的元素及其出现次数。 13. **通过某个关键字排序一个字典列表**:解释了如何根据字典中的特定键来对字典列表进行排序。 14. **排序不支持原生比较的...

    python动态规划背包问题算法-01背包问题(动态规划算法).pdf

    其中,f[i-1][v]表示不选取第i个物品时的最大价值,f[i-1][v-w[i]] + c[i]表示选取第i个物品并将其放入背包中的最大价值。 在Python中实现这个算法时,我们可以使用一个二维列表来存储f数组,初始化所有值为0,然后...

    python cookbook 第三版

    - **序列中出现次数最多的元素**:了解如何快速找出序列中出现次数最多的元素。 - **通过某个关键字排序一个字典列表**:学习如何按照字典列表中的特定字段进行排序。 - **排序不支持原生比较的对象**:探讨如何对不...

    _leetcode-python.pdf

    - Maximum Subarray: 寻找一个整数数组中,连续子数组的最大和。 - Spiral Matrix: 给定一个m×n矩阵,以螺旋方式遍历矩阵中的所有元素一次,并且只遍历一次。 - Merge Intervals: 给定一组区间,请合并所有重叠的...

    《Python Cookbook》第三版繁體中文

    1.12 序列中出现次数最多的元素:找出序列中出现频率最高的元素。 1.13 通过某个关键字排序一个字典列表:将字典列表按照字典中的某一个键的值进行排序。 1.14 排序不支持原生比较的对象:对包含复杂对象的列表进行...

    algorithm_python教程_

    在Python编程语言中,算法是解决问题的关键组成部分,尤其在数据处理和分析中更是如此。"algorithm_python教程_"可能涵盖了一系列关于排序算法及其优化方法的教学内容。在这个教程中,你可能会学习到如何使用Python...

Global site tag (gtag.js) - Google Analytics