递归: 函数自己调用自己
递归如果没有任何东西拦截的话. 它默认就是一个死循环
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,那你的算法基本上就有问题了,一定要重视,要调整你的代码。
循环可能是你更好的出路。
标签:调用,递归,Python,123,func,line,第四章 From: https://www.cnblogs.com/Magiclala/p/17867771.html