遞歸調用:
在調用一個函數的過程中,直接或者簡介調用了該函數本身
必須有一個明確的結束條件
遞歸特性:
1. 必須有一個明確的結束條件
2. 每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少
3. 遞歸效率不高,遞歸層次過多會導致棧溢出(在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,
每當函數返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出)
注意:函數不能夠像while那樣一直死循環下去,函數遞歸最大只能遞歸999次
?
# 例子
age(1)=age(2)+2
age(2)=age(3)+2
age(3)=age(4)+2
age(4)=age(5)+2
age(5)=18age(n)=age(n+1)+2 #n<5
age(n)=18 #n=5def age(n):if n == 5:return 18return age(n+1)+2print(age(1))
練習:打印出列表中的所有元素
l = [1,[2,3,[4,5,[6,7,[8,9,[10,11,[12,13]]]]]]]
def func(l):for i in l:if isinstance(i,list):func(i)else:print(i)
func(l)
?
應用場景:不知道應該循環多少次,只知道什么時候應該結束