python遞迴 演算法 遞迴(Python解釋)

2021-10-11 19:47:07 字數 1689 閱讀 8430

通俗一點來說,遞迴就是一種在函式內呼叫自己的演算法。
每一級呼叫都會有自己的引數。

每一次呼叫都會有一次返回。(可能是返回自己,繼續遞迴;也可能是返回特定值,結束遞迴。)

遞迴解釋

優點:直觀,實現簡單,可讀性好。

缺點:會有重複的呼叫(優化裡會說明),占用空間大,遞迴太深,會造成棧溢位(呼叫太多,不給你呼叫了)。

遞迴2大要素:結束條件和呼叫自己。
遞迴機制

我們一般都用if——else if——else來判斷結束條件。

結束條件並且至少要有乙個,否則函式會無限執行下去。

必須要有呼叫自己的過程,不然體現不出遞迴的機制。

你要想學好遞迴,首先就要不斷地練習遞迴。

比如說我們用遞迴實現斐波那契額數列:

先從上往下看,是「遞」;從下往上看,是「歸」

再比如我們用遞迴實現階乘:

階乘機制

好好觀察,你發現了什麼?

觀察它們有很多部分是重複的!

重複部分

如果我們定義乙個備忘錄,在裡面儲存值,如果發現值已經在備忘錄裡,那麼我們直接使用備忘錄裡的值豈不美哉!

這實際上是一種空間換時間的做法。
我們這裡的備忘錄可以用上key-value對的思想。

作者使用的python語言,本身自帶一種字典的資料結構。

它裡面有好多值,每個值裡包含乙個key和乙個value。

key與value相對應。

如果你的語言不支援字典,你可以使用巢狀陣列來模擬。([[key,value],[key,value]···])

我們先查詢所有的key裡面是否有n

如果有:你什麼也不用做。

如果沒有:我們把對應的n和程式算出來的值形成key-value對。把算出的key-value對新增到備忘錄裡。

最後:因為兩種情況都要返回備忘錄裡的值,所以我們把這兩步化成一步。

優化遞迴

遞迴就是一種在函式內呼叫自己的演算法。

我們可以使用「備忘錄」來優化遞迴。

python遞迴實現 遞迴演算法 python實現

在函式的定義中對這個函式自身的呼叫,就是遞迴。遞迴結構中,遞迴的部分必須比原來的整體簡單,才有可能到達某種終結點 出口 而且必須存在非遞迴的基本結構構成的部分,否則會無限遞迴。學習目標 程式設計實現斐波那契數列求值 f n f n 1 f n 2 程式設計實現求階乘 n 程式設計實現一組資料集合的全...

python 遞迴演算法

一 遞迴演算法三定律 二 通過求列表和分析遞迴演算法 如下 def list sum num list if len num list 0 return 0 elif len num list 1 return num list 0 else return num list 0 list sum n...

python 演算法 遞迴演算法

在計算機中,程式呼叫自身的程式設計技巧我們稱之為遞迴演算法。那麼再通俗一點來講就是 在某個python檔案中,有乙個函式,這個函式可以在自己的函式體內根據條件,自己呼叫自己的函式,那麼這樣自身呼叫自身的過程或者說行為,我們稱之為遞迴。1 假設,有乙個直線型的迷宮 只有一條路,不能拐彎 迷宮中有乙份藏...