1. 程式人生 > >day4-遞歸調用

day4-遞歸調用

inf 有一個 img 但是 blog http 語言 舉例 一行

---恢復內容開始---

return關鍵字可以滿足針對一個正在運行的函數,突然不再運行了的功能。

技術分享圖片

遞歸調用(遞推)舉例推斷出年齡26歲: 回溯的階段

技術分享圖片

總結遞歸的使用:

#python中的遞歸
python中的遞歸效率低,需要在進入下一次遞歸時保留當前的狀態,在其他語言中可以有解決方法:尾遞歸優化,即在函數的最後一步(而非最後一行)調用自己,尾遞歸優化:http://egon09.blog.51cto.com/9161406/1842475
但是python又沒有尾遞歸,且對遞歸層級做了限制

#總結遞歸的使用:
1. 必須有一個明確的結束條件

2. 每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少

3. 遞歸效率不高,遞歸層次過多會導致棧溢出(在計算機中,函數調用是通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出)

---恢復內容結束---

day4-遞歸調用