一、解釋
遞歸:在調用一個函數的過程中,直接或間接地調用了函數本身這個就叫遞歸
注:Python在遞歸中沒有像別的語言對遞歸進行優化,所以他的每一次調用都會基於上一次的調用進行,並且他設置了最大的遞歸數量防止遞歸外溢
二、實例
#直接調用自己: def func(): print('from func') func() func()
#間接調用自己 def foo(): print('from foo') bar() def bar(): print('from bar') foo() foo()
#遞歸的實現: def age(n): if n == 1: return 18 return age(n-1)+2 print(age(5)) # age(5)=age(4)+2 第一次進入 # age(4)=age(3)+2 第二次進入 # age(3)=age(2)+2 第三次進入 # age(2)=age(1)+2 第四次進入 # age(1)=18 第五次進入,最后判斷終止條件 # age(n)=age(n-1)+2 #n>1 遞歸終止條件 # age(1)=18 #n=1 等於終止條件
三、遞歸的回溯與遞推
遞推:像上邊遞歸實現所拆解,遞歸每一次都是基於上一次進行下一次的執行,這叫遞推
回溯:則是在遇到終止條件,則從最后往回返一級一級的把值返回來,這叫回溯
# 實例 l =[1, 2, [3, [4, 5, 6, [7, 8, [9, 10, [11, 12, 13, [14, 15,[16,[17,]],19]]]]]]] def search(l): for item in l: if type(item) is list: search(item) else: print(item) search(l)
