遞迴python 資料結構3

2021-10-06 13:53:21 字數 750 閱讀 3557

基線條件:函式不再呼叫自身,避免死迴圈【即限制條件】

遞迴條件:函式呼叫自身

執行函式中途呼叫另乙個函式時,當前函式暫停並處於未完成狀態

棧:先進後出【裝箱,最晚放進來的最早拿出去】

使用方便,但儲存詳盡資訊可能占用大量記憶體,每次函式呼叫都需占用記憶體,當n越大,程式執行效率越低。

解決:1迴圈 2尾遞迴

例:階乘

遞迴:建新棧

尾遞迴:不建新棧,直接覆蓋,占用恒量記憶體,大大節省棧空間,提公升執行效率

#遞迴

defrec

(n):

if n ==1:

return n

else

:return n + rec(n -1)

#尾遞迴

deftailrec

(n, total =1)

:if n ==1:

return total

else

:return tailrec(n -

1, total * n)

#迭代total =

1for i in

range(2

, n)

: total = total * i

Python3 資料結構之遞迴

遞迴 def fact x if x 1 return 1 else return x fact x 1 tail recursion 尾遞迴 def tail recusion x,total 1 if x 1 return total else return tail recusion x 1,...

資料 結構 遞迴

遞迴不一定非要像斐波拉契數列一樣在return中呼叫函式 遞迴的結束條件就是初始條件值 通常的方法將遞迴呼叫放在if語句中 n!通過遞迴實現 常用方法還是通過while實現 def jiecheng n if n 0 return 1 else sum n jiecheng n 1 右邊只有階乘表示...

資料結構 遞迴

所謂遞迴,就是在乙個函式,過程,或者資料結構的內部,又直接或間接出現定義本身的應用。在以下三種情況中,常常使用遞迴。比如階乘函式,我們能夠將其分解成幾個小問題來求解,比如求5!我們可以先求4!想求4!先求3!這樣一步步使問題簡化的方法,稱之為分治法。採取分治法求解,需要滿足下面三個條件 1.能夠將乙...