筆記 python基礎之遞迴函式

2021-09-07 19:59:59 字數 1696 閱讀 1540

學習要求:

能看懂遞迴

能知道遞迴的應用場景

遞迴函式

了解什麼是遞迴 : 在函式中呼叫自身函式

最大遞迴深度預設是997/998 —— 是python從記憶體角度出發做得限制

while true:

print('從前有座山')

def story():

print('從前有座山')

story()

print(111)

story()→輸出:998條資訊

recursionerror:遞迴函式的錯誤,超過了函式的最大深度就會報錯,以避免浪費記憶體。

#可設定最大深度,一般不能設定,預設是安全值

import sys

sys.setrecursionlimit()

如果遞迴次數太多,就不適合使用遞迴來解決問題

遞迴的缺點 : 佔記憶體

遞迴的優點: 會讓**變簡單

# alex 多大       n = 1   age(1) = age(2)+2 = age(n+1) + 2

# alex比egon大兩歲

# egon多大? n = 2 age(2) = age(3) + 2 = age(n+1) +2

# egon比wusir大兩歲

# wusir多大 n = 3 age(3) = age(4) + 2 = age(n+1) +2

# wusir比金老闆大兩歲

# 金老闆多大?

# 金老闆40了 n = 4 age(4) = 40

# n = 4 age(4) = 40

# n <4 age(n) = age(n+1) +2

def age(n):

if n == 4:

return 40

elif n >0 and n < 4:

age(n+1) + 2

print(age(1))

教你看遞迴

def age(1):

if 1 == 4:

return 40

elif 1 > 0 and 1 < 4:

return 46

def age(2):

if 2 == 4:

return 40

elif 2 >0 and 2 < 4:

age(3) + 2 none +2

def age(3):

if 3 == 4:

return 40

elif 3 >0 and 3 < 4:

42def age(4):

if 4 == 4:

return 40

elif n >0 and n < 4:

age(n+1) + 2

注意事項

超過最大遞迴限制的報錯

只要寫遞迴函式,必須要有結束條件。

返回值

不要只看到return就認為已經返回了。要看返回操作是在遞迴到第幾層的時候發生的,然後返回給了誰。

如果不是返回給最外層函式,呼叫者就接收不到。

需要再分析,看如何把結果返回回來。

python基礎之遞迴函式

在python中我們使用函式經常是去呼叫別的函式,但是遞迴函式不一樣,它是 自己去呼叫自己 如果不了解遞迴的可以看下電影盜夢空間,相信會對理解遞迴函式有幫助。遞迴函式的條件有兩個 1.必須給遞迴函式乙個出口,否則會無限呼叫,耗費記憶體 2.對自己的遞迴條件作大膽假設 下面我們計算數學上經常計算的階乘...

Python基礎之遞迴函式

什麼是遞迴函式?遞迴 recursion 1.是乙個函式 2.函式執行的過程中,自己呼叫自己 3.遞迴一定有結束呼叫自己的條件 4.遞迴效率不高 5.什麼問題必須用遞迴?漢諾塔 6.不會死迴圈,有最大遞迴次數限制,會報錯 recursionerror maximum recursion depth ...

Python筆記之遞迴函式

python支援遞迴函式 即直接或者間接地呼叫自身以進行迴圈的函式。遞迴是python中比較的高階的話題,並且它在python中比較少見。然後,它是一項非常有用的技術,因為它允許程式遍歷擁有任意的,不可預知的形狀的結構。我們來看乙個例子。假如要對乙個數字列表求和,我們可以使用內建的sum函式,或者是...