【Python问题解决】---- RecursionError: maximum recursion depth exceeded while calling a Python object
Python,问题,解决,----,RecursionError,maximum,recursion,depth,exceeded,while,calling,object
2025-03-25 08:59:26 时间
1. 报错
RecursionError: maximum recursion depth exceeded while calling a Python object
2. 报错截图
3. 报错场景
使用分治算法解决【找数组的最大值和最小值】问题,使用递归导致的报错!
4. 错误原因
Python 默认递归调用深度为1000(即最多递归调用1000次),而程序在运行过程中超过最大的递归深度。
5. 为什么最大递归深度要有限制呢?
本质上讲,在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。 在递归调用中,每个函数在调用自己的时候 还没有退出,调用多了肯定会导致内存崩溃,因此需要对递归深度进行限制。
6. 解决方案一
检查递归代码中是否有结束条件,避免死循环,以及递归结束条件是否合理。一般合理的代码是不会超过默认深度的。
7. 解决方案二
将默认的递归深度修改为3000
import sys
sys.setrecursionlimit(1000)
8. 总结
- 建议使用方案一!
- 方案二可能导致:【StackOverflow(栈区溢出),迫使程序意外终止。】
相关文章
- python数据分析源码_python 统计分析
- Easy Games With Python and Pygame(二)- Pygame 绘制图形
- 我用 Python 给老板写了封拒绝不了的辞职信
- python线程间通信的方式_android 线程间通信
- Python源码保护[通俗易懂]
- 王力宏的瓜很大!我用Python爬取了瓜文评论区,发现更精彩
- Python 模板渲染库 yaml 和 jinja2 的实战经验分享
- python中字符转换
- Python负数取余总结
- python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」
- 毕业设计!Python实现学生教师刷脸签到系统
- pythoncharm注释快捷键_JAVA注释快捷键
- Python项目44-前后端分离项目(前戏)
- 用Python的好处
- 造数据神器Faker,一个有趣又实用的Python第三方库
- python读写json_python格式化json
- 纯 Python 搭建全文搜索引擎
- python matplotlib 动态图_matplotlib怎么读
- python实现微信发消息
- Python项目49-用户验证短信接口(可劲撸)