python3 递归
生活随笔
收集整理的這篇文章主要介紹了
python3 递归
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
遞歸調用:
在調用一個函數的過程中,直接或者簡介調用了該函數本身 必須有一個明確的結束條件
遞歸特性:
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)
在調用一個函數的過程中,直接或者簡介調用了該函數本身 必須有一個明確的結束條件
遞歸特性:
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)
?
應用場景:不知道應該循環多少次,只知道什么時候應該結束轉載于:https://www.cnblogs.com/lucaq/p/7067697.html
總結
以上是生活随笔為你收集整理的python3 递归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python模块之hashlib:提供h
- 下一篇: 命令行窗口常用的一些小技巧