1、定義:函數的遞歸調用是函數的嵌套調用的一種特殊形式,表現爲在調用一個函數的過程當中又直接或間接地調用了自身,實現了循環,因此說遞歸的本質就是循環。函數
def f1(): f1() # 自我循環調用 def f2(): f3() def f3(): f2() # 互相循環調用
2、遞歸調用實現的循環與while循環的區別:while循環能夠經過保持條件永遠爲真實現無限循環,可是每次循環不會額外申請內存空間。遞歸調用每次都會申請新的局部空間,因此默認有上限次數1000,該次數能夠修改。spa
3、遞歸調用的兩個階段code
一、回溯:一層層的調用直至知足終止條件的過程稱爲回溯。blog
二、遞推:從知足終止條件向外層逐層返回的過程稱爲遞推。遞歸
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 # 以上是遞推過程