程式設計思想之遞迴

2022-02-14 00:14:28 字數 1246 閱讀 8737

我之前寫過關於遞迴演算法

的博文,但作為程式設計思想系列的文章不得不再對它進行進一步深入的剖析。因為它是一種簡單、常用又重要的一種程式設計思想。

舉乙個通俗的例子:

有乙個8倆重的蘋果要你切成重量相等的若干份,每乙份的重量不能大於1倆。你肯定會想到這樣做:

1.第一刀先把乙個蘋果切成重量均等的2份a1和a2;

2.再把其中的乙份a1切成重量均等的兩份a11和a12, 把a2切成均等的兩份a21和a22;

3.把a11切成均等的兩份……

4.直到每一小份都小於等於1倆為止。

以上的例子就是遞迴乙個模型,把乙個大的事物化成若干個小的事物,每一次使用的方法都相同。

更為專業的定義:

程式自身呼叫自身的程式設計技巧稱為遞迴( recursion)。遞迴有直接遞迴和間接遞迴

•直接遞迴:函式在執行過程中呼叫本身。

•間接遞迴:函式在執行過程中呼叫其它函式再經過這些函式呼叫本身。

遞迴有四個特性:

1.必須有可最終達到的終止條件,否則程式將陷入無窮迴圈;

2.子問題在規模上比原問題小,或更接近終止條件;

3.子問題可通過再次遞迴呼叫求解或因滿足終止條件而直接求解;

4.子問題的解應能組合為整個問題的解。

上面的例子中也滿足以上的四點性質:

(1).終止條件是每乙份的重量不能大於1倆;(2).每一次切的大小都比上一次小;(3).每一次切的方式都相同,所以子問題可遞迴呼叫;(4).最終切成的每一小份也就是要求的解。

對上面例子的實現:

if (weight <= 1) else

} public static void main(string args)

結果:第1次等分的重量為:4.0   4.0

第2次等分的重量為:2.0   2.0

第3次等分的重量為:1.0   1.0

第3次等分的重量為:1.0   1.0

第2次等分的重量為:2.0   2.0

第3次等分的重量為:1.0   1.0

第3次等分的重量為:1.0   1.0

將大問題分解成小問題,將複雜的問題簡單化;

使程式更易於理解,增強可讀性;

分析問題,看看問題是否屬於遞迴模型,能否用遞迴模型解決。乙個問題能否用遞迴模型就看它是否滿足遞迴的四個特性。

遞迴在呼叫的時候要儲存呼叫點的資訊,因此會有呼叫開銷。在對效率有較高要求的時候,如果能用迴圈解決問題最好不要用遞迴,因為迴圈沒有呼叫開銷,效率會更高。

遞迴思想與遞迴程式設計

今天來談談遞迴程式設計,我想參與過程式設計經歷的,或者學過程式設計的都應該了解遞迴,遞迴思想在解決一些問題上顯得尤為方便,能發出意想不到的效果,但是遞迴程式設計顯然難度比較大,沒有非常豐富的程式設計經驗或者對遞迴有過很深的理解,不能隨手就寫出遞迴的 所以今天就來談談遞迴怎麼用?遞迴的程式設計模式就是...

遞迴思想程式設計

將非負十進位制整數n轉換成b進製。其中b 2 16 基本要求 1.完成題目1,採用遞迴思想程式設計解決問題,要求設計出遞迴模型 遞迴出口和遞迴體的函式式 2.程式設計風格良好,實現功能測試 確保程式的健壯性。3.畫出遞迴樹或者遞迴棧的呼叫過程。4.實現非遞迴方法。return n 0 system ...

遞迴思想之 階乘演算法

關於階乘這裡簡單說明一下 階乘是什麼?1 x 2 x 3 x 4 x 5 5 這裡的5 就稱為5的階乘,之所以稱為階乘是因為乘數呈階梯狀遞減而得名,如下 5 5 x 4 x 3 x 2 x 1 1204 4 x 3 x 2 x 1 24 3 3 x 2 x 1 6 2 2 x 1 2 1 1 1 0...