一、定義:函數的遞歸調用是函數的嵌套調用的一種特殊形式,表現為在調用一個函數的過程中又直接或間接地調用了自身,實現了循環,所以說遞歸的本質就是循環。
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 # 以上是遞推過程