|
|
刚分手的牙膏 · Hough变换_hough变化的四个坐标如何 ...· 1 年前 · |
|
|
卖萌的鸡蛋面 · Android ...· 1 年前 · |
|
|
活泼的手套 · HTTP Status 404 – 未找到 ...· 2 年前 · |
|
|
成熟的毛衣 · css media ...· 2 年前 · |
在函数调用时,为了保证能够正确返回,必须进行保存现场和恢复现场,也就是被调函数结束后能够回到主调函数中离开时的位置然后继续执行主调函数中的代码。这些现场或上下文信息保存在线程栈中,而线程栈的大小是有限的。
对于函数递归调用,会将大量的上下文信息入栈,如果递归深度过大,会导致线程栈空间不足而崩溃。
在Python中,为了防止栈崩溃,默认递归深度是有限的(在某些第三方开发环境中可能略有不同)。下图是IDLE开发环境的运行结果:
下图是Jupyter Notebook中的运行结果:
因此,在编写递归函数时,应注意递归深度不要太大,例如下面计算组合数的代码:
如果确实需要很深的递归深度,可以使用sys模块中的setrecursionlimit()函数修改默认的最大深度限制。例如:
领取 专属20元代金券
Get大咖技术交流圈
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287