1、递归的概念:在函数中调用自身函数
2、最大递归深度默认为997/998,这是python从内存的角度出发做出的限制
3、如果递归的次数太多,就不适合使用递归来解决问题
4、递归的缺点:占内存
5、递归的优点:会让代码变得简单
6、递归需要有一个明确的结束条件,并且每一次递归问题规模应该比上一次有所减小
7、递归函数举例:
# 递归函数求解斐波拉契数列
def fibo(n):
if n == 1 or n == 2:
return 1
else:
return fibo(n-1) + fibo(n-2)
print(fibo(5))
>>>
5
# 上面函数我们可以简化为
def fibo(n):
return 1 if n == 1 or n == 2 else fibo(n-1) + fibo(n-2) # 这里使用一个三元运算符,将代码简化
# 结合最近学习的匿名函数我们可以将代码简化为一行
fibo = lambda n : 1 if n == 1 or n == 2 else fibo(n-1) + fibo(n-2)
print(fibo(5))
>>>
5
# 递归函数求阶乘
def fio(n):
if n == 0:
return 1
else:
return n * fio(n-1)
print(fio(3))
>>>
6
# 简化代码
def fio(n):
return 1 if n == 0 else n * fio(n-1)
#利用匿名函数
fio = lambda n : 1 if n == 0 else n * fio(n-1)