一、定义:函数的递归调用是函数的嵌套调用的一种特殊形式,表现为在调用一个函数的过程中又直接或间接地调用了自身,实现了循环,所以说递归的本质就是循环。
def f1(): f1() # 自我循环调用 def f2(): f3() def f3(): f2() # 互相循环调用
二、递归调用实现的循环与while循环的区别:while循环可以通过保持条件永远为真实现无限循环,但是每次循环不会额外申请内存空间。递归调用每次都会申请新的局部空间,所以默认有上限次数1000,该次数可以修改。
三、递归调用的两个阶段
1、回溯:一层层的调用直至满足终止条件的过程称为回溯。
2、递推:从满足终止条件向外层逐层返回的过程称为递推。
def add(n): if n == 1: return 100 return add(n - 1) + 1 print(add(6)) # 结果为 105 # add(6) = add(5) + 1 # add(5) = add(4) + 1 # add(4) = add(3) + 1 # add(3) = add(2) + 1 # add(2) = add(1) + 1 # 以上是回溯过程 # add(1) = 100 # add(2) = 100 + 1 = 101 # add(3) = 101 + 1 = 102 # add(4) = 102 + 1 = 103 # add(5) = 103 + 1 = 104 # add(6) = 104 + 1 = 105 # 以上是递推过程