python學習筆記 day17 初識遞迴

2022-02-06 22:18:59 字數 1120 閱讀 5695

從前有座山,山上有座廟,廟裡有個老和尚,老和尚再給小和尚講故事:從前有座山,山上有座廟...

這其實就是乙個遞迴的例子,只不過這是只遞不歸,,

再比如這段**:

def

story():

print("

從前有座山")

story()

story()

呼叫story() 會不斷地執行裡面的**,不斷又呼叫story(),我們都知道當呼叫函式的時候,會開闢乙個記憶體空間,但是這段**,不斷的呼叫story()而且最外層的呼叫還沒有被釋放,記憶體一直沒被占用,一直被開闢空間,python設定了遞迴呼叫的最大深度是998,所以這段**執行之後會報錯:

就是遞迴錯誤,超過了遞迴的最大深度~

比如下面這個例子:

問題分析,一次次往下-----遞;結果一次次向上傳遞---歸

轉化為**:

def

age(n):

if n==4:

return 40

else

:

return age(n+1)+2

print(age(1))

執行結果:

分析過程:

首先你要明白age()這個函式是有返回值的!!

當你呼叫age(1)時,執行 return age(2)+2 -----》然後你要去執行 age(2): return age(3)+2-----》age(3):return age(4)+2-----》age(4):return 40  

然後將最後一層函式返回的結果一層層往上傳: age(4)拿到返回值40-----》放在呼叫它age(4)的位置 就是age(3)=40+2  所以age(3)的返回值 42----》,age(2)的返回值局勢42+2=44 ----》age(1)的返回值就是44+2=46

最後返回給函式呼叫age(1)的位置,列印該結果~

day17學習筆記(物件導向)

1 類屬性 定義在類中的變數 類屬性的值不會因為物件的不同而不同 2 物件屬性 通過 self.屬性名 值 定義在 init 函式中的屬性 物件屬性的值會因為物件不同而不同 物件.屬性 獲取物件指定屬性的值 getattr 物件,屬性名 獲取物件指定屬性的值 getattr 物件,屬性名,預設值 獲...

力扣學習筆記day17

編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列 使用 o 1 的額外空間解決這一問題。你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。eg 輸入 h e l l o 輸出 o l l e h...

python學習day17 遞迴函式

遞迴函式 def age n if n 4 return 40 elif n 0 and n 4 return age n 1 2 print age 1 46 只要寫遞迴函式,必須要有結束條件。二分法查詢 l 2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55...