Python——第四章:函数的递归调用
递归: 函数自己调用自己
递归如果没有任何东西拦截的话. 它默认就是一个死循环
def func()
func()
func()
因此递归调用的时候需要有判断,来退出循环
def func()
if xxxxx:
return
func()
func()
这里就用到了return来充当循环中的break作用。
如果执意要进行递归调用,还没有判断的话,真实调用的最后会出现报错
def func():
print(123)
func()
func()
#运行结果,最后部分
123
123
123
123
123
123
Traceback (most recent call last):
File "D:\Python\递归.py", line 5, in <module>
func()
File "D:\Python\递归.py", line 3, in func
func()
File "D:\Python\递归.py", line 3, in func
func()
File "D:\Python\递归.py", line 3, in func
func()
[Previous line repeated 994 more times]
File "D:\Python\递归.py", line 2, in func
print(123)
RecursionError: maximum recursion depth exceeded while calling a Python object #最大递归深度调用python的对象
每次函数在调用的时候都会划分出局部作用域,因此递归调用是有系统默认最大值的。
python默认是有递归深度的限制的。默认的最大递归深度是1000,但是永远不能达到1000,我们也可以调整递归最大深度,但是也永远不能达到设置的那个值
import sys
print(sys.getrecursionlimit())
sys.setrecursionlimit(2000)
如果你的代码递归次数到达了最大深度1000,那你的算法基本上就有问题了,一定要重视,要调整你的代码。
循环可能是你更好的出路。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)