Python 遞迴與尾遞迴 事例詳解

2021-10-04 14:24:44 字數 593 閱讀 3760

小明帯了一筆錢出去旅遊,出門的第一天花了ー半,加10元,往後的每天都花之前一天剩下的半,加10元,

第八天的早上時候小明只剩下了10元錢,寫段**,計算小明出去的時候帶了多少錢?

一般遞迴:

每一級遞迴,都會呼叫函式本身,會建立新的棧,隨著遞迴深度的增加,建立的棧會越來越多,最終會造成爆棧。

def money(day):

if day == 8:

return 10

else:

money_new = (money(day + 1) + 10) * 2

return money_new

尾遞迴:

基於函式的尾呼叫,每一級呼叫直接返回函式的返回值更新呼叫棧,而不是建立新的呼叫棧,類似迭代的實現,

時間和空間上均優化了一般遞迴。

def money_02(day, total=10):

if day == 8:

return total

else:

money_new = money_02(day + 1, (total + 10) * 2)

return money_new

python遞迴 Python 與尾遞迴優化

有很多時候,使用遞迴的方式寫 要比迭代更直觀一些,以下面的階乘為例 def factorial n if n 0 return 1 return factorial n 1 n 但是這個函式呼叫,如果展開,會變成如下的形式 factorial 4 factorial 3 4 factorial 2 ...

遞迴與尾遞迴

1 遞迴 關於遞迴的概念,我們都不陌生。簡單的來說遞迴就是乙個函式直接或間接地呼叫自身,是為直接或間接遞迴。一般來說,遞迴需要有邊界條件 遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進 當邊界條件滿足時,遞迴返回。用遞迴需要注意以下兩點 1 遞迴就是在過程或函式裡呼叫自身。2 在使用遞迴策略時...

遞迴與尾遞迴

1 遞迴 簡單的來說遞迴就是乙個函式直接或間接地呼叫自身,是為直接或間接遞迴。一般來說,遞迴需要有邊界條件 遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進 當邊界條件滿足時,遞迴返回。用遞迴需要注意以下兩點 1 遞迴就是在過程或函式裡呼叫自身。2 在使用遞迴策略時,必須有乙個明確的遞迴結束條件...