Python精簡入門學習之遞回函式
-遞回
遞回滿足的條件
自己呼叫自己
必須有一個明確的結束條件
優點:
邏輯點單、定義簡單
缺點:
容易導致堆疊溢位 記憶體資源緊張 甚至記憶體泄漏
回圈的方式去實作
def jiecheng(n):
result = 1
for item in range(1,n+1):
result *= item
pass
return result
print('5的階乘{}'.format(jiecheng(5)))
# 遞回方式實作
def diguiJc(n):
'''
遞回實作
:param n:階乘引數
:return:
'''
if n==1:
return 1
else:
return n * diguiJc(n - 1)
pass
# 遞回呼叫
print('10的階乘{}'.format(diguiJc(10)))
'''
思路:呼叫處為入口 此時n的值是10 進行判斷 10是否等于1 不滿足執行else的陳述句 回傳n*diguiJc(n-1)
此時n的值為9 繼續呼叫自身 直至滿足第一個條件時直接回傳1 就退出了空間開辟
'''
-遞回
遞回就是呼叫自身:
遞:
簡單來說就是俄羅斯套娃 一層又一層,你想要得到最里面的套娃那你就要一層一層的去打開 這里遞
歸就是這樣的 不斷的開辟空間呼叫自身,如同《盜夢空間》一樣,夢中夢,
歸:
當不滿足繼續開辟空間的條件時,就會回傳引數,但是它不能直接回傳,就和套娃一樣你要回傳原樣得一層一層
的套回去,結果也得一層一層得往上傳,如同《盜夢空間》一樣,柯布最后夢醒了,
-如圖所示[圖片來自網路]

開辟空間(呼叫自身)-->關閉空間(引數傳遞)
必須要有一個明確的條件,不然無窮的開辟記憶體空間會導致堆疊溢位電腦慢到卡死,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/271349.html
標籤:python
上一篇:Python第四課~
