前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Python程序中设置函数最大递归深度

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

作者头像
Python小屋屋主
发布2018-08-03 11:58:23
2.9K0
发布2018-08-03 11:58:23
举报
文章被收录于专栏:Python小屋Python小屋Python小屋

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

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

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档