1. 程式人生 > >Python小白學習之路(十三)—【遞歸調用】

Python小白學習之路(十三)—【遞歸調用】

結束 style mon port 特性 小白 好的 就是 實例

一、遞歸調用定義

在函數內部,可以調用其他函數。

如果在調用一個函數的過程中直接或間接調用自身本身,則稱為遞歸調用

從某種意義上來說,遞歸調用可以實現無限循環


二、遞歸調用的特性

  • 必須有一個明確的結束條件
  • 每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少
  • 遞歸效率不高,遞歸層次過多會導致棧溢出
    • 在計算機中,函數調用是通過棧(stack)這種數據結構實現的
    • 每當進入一個函數調用,棧就會加一層棧幀
    • 每當函數返回,棧就會減一層棧幀
    • 由於棧的大小不是無限的,所以,遞歸調用的次數過多,會導致棧溢出


三、遞歸實例

遞歸調用就是一個問路的過程。通過一個程序以及其執行過程來更好的理解遞歸調用

 1 import time
 2 person_list = [Rachel, Monica, Ross, Joey]
 3 def ask_way(person_list):
 4     print(-*60)
 5     if len(person_list) == 0:
 6         return 沒人知道
 7     person = person_list.pop(0)
 8     if person == Ross:
 9         return %s說:我知道,流水人家就在小橋旁 %person
10     print(
hi 親愛的%s,知道流水人家在哪裏嗎? %person) 11 print(%s回答道:抱歉,我不知道,我幫你問問%s... %(person,person_list)) 12 time.sleep(3) 13 res = ask_way(person_list) 14 print(%s問的結果是: %res %(person,res)) 15 return res 16 res = ask_way(person_list) 17 print(res)

Python小白學習之路(十三)—【遞歸調用】