Py学习  »  Python

在Python程序中设置函数最大递归深度

Python小屋 • 5 年前 • 546 次点击  

在函数调用时,为了保证能够正确返回,必须进行保存现场和恢复现场,也就是被调函数结束后能够回到主调函数中离开时的位置然后继续执行主调函数中的代码。这些现场或上下文信息保存在线程栈中,而线程栈的大小是有限的。

对于函数递归调用,会将大量的上下文信息入栈,如果递归深度过大,会导致线程栈空间不足而崩溃。

在Python中,为了防止栈崩溃,默认递归深度是有限的(在某些第三方开发环境中可能略有不同)。下图是IDLE开发环境的运行结果:

下图是Jupyter Notebook中的运行结果:

因此,在编写递归函数时,应注意递归深度不要太大,例如下面计算组合数的代码:

如果确实需要很深的递归深度,可以使用sys模块中的setrecursionlimit()函数修改默认的最大深度限制。例如:



---------董付国老师Python系列教材--------

1)《Python程序设计(第2版)》(2018年7月第7次印刷)

2)《Python可以这样学》(2018年7月第6次印刷)(本书已发行繁体版)

3)《Python程序设计基础(第2版)(2018年7月第3次印刷)

4)《中学生可以这样学Python》2018年5月第2次印刷)

5)《Python程序设计开发宝典》(2018年2月第3次印刷)

6)《玩转Python轻松过二级》(2018年7月第3次印刷)


董付国老师6本Python系列图书阅读指南

董付国老师6本Python系列教材被北大、复旦等近百所高校选作教材

热烈庆祝《Python可以这样学》在台湾发行繁体版


董老师127课免费视频地址: https://pan.baidu.com/s/1jJeAs8Q 密码: px59


----------相关阅读----------

教学课件

1900页Python系列PPT分享一:基础知识(106页)

1900页Python系列PPT分享二:Python序列(列表、元组、字典、集合)(154页)

1900页Python系列PPT分享三:选择与循环结构语法及案例(96页)

1900页Python系列PPT分享四:字符串与正则表达式(109页)

1900页Python系列PPT分享五:函数设计与应用(134页)

1900页Python系列PPT分享六:面向对象程序设计(86页)

1900页Python系列PPT分享七:文件操作(132页)

1900页Python系列PPT分享八:异常处理结构与程序调试、测试(70页)

报告PPT(163页):基于Python语言的课程群建设探讨与实践

非计算机专业《Python程序设计基础》教学参考大纲

计算机相关专业“Python程序设计”教学大纲(参考)

报告PPT(123页):Python编程基础精要

《Python程序设计》实验指导书(30个实验)


系列题库分享

1000道Python题库系列分享一(17道)

1000道Python题库系列分享二(48道)

1000道Python题库系列分享三(30道)

1000道Python题库系列分享四(40道)

1000道Python题库系列分享五(40道)

1000道Python题库系列分享六(40道)

1000道Python题库系列分享七(30道)

1000道Python题库系列分享八(29道)

1000道Python题库系列分享九(31道)

1000道Python题库系列分享十(37道)

1000道Python题库系列分享十一(9道)

1000道Python题库系列分享十二(9道编程题)


相关阅读

Python泛型函数与单分发器

Python中的偏函数和函数柯里化

Python列表与数字的四则运算

详解Python切片技术

详解Python中的浅复制与深复制

Python运算符含义汇总

Python内置函数使用说明

Python模拟决赛现场最终得分计算过程

Python使用模块中对象的几种方法

Python计算信息熵

Python中定义只能实例化一个对象的类

Python从序列中选择k个不重复元素

时间都去哪儿了之Python程序测试与优化

Python函数嵌套定义的洪荒之力



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/4Q69RsUKdj
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/21798
 
546 次点击