一、算法概述
遞歸算法是一種直接或者間接調用自身函數或者方法的算法。說簡單了就是程序自身的調用。
二、算法實質
遞歸算法就是將原問題不斷分解為規模縮小的子問題,然后遞歸調用方法來表示
三、算法思想
遞歸算法,顧名思義就是有兩個大的階段:遞和歸,即就是有去(遞去)有回(歸來)。
- 遞去:將遞歸問題分解為若干個規模較小,與原問題形式相同的子問題,這些子問題可以用相同的解題思路來解決
- 歸來:當你將問題不斷縮小規模遞去的時候,必須有一個明確的結束遞去的臨界點(遞歸出口),一旦達到這個臨界點即就從該點原路返回到原點,最終問題得到解決。
四、遞歸算法的設計要素
-
遞歸思維是一種從下向上的思維方式,使用遞歸算法往往可以簡化我們的代碼, 而且還幫我們解決了很復雜的問題。遞歸算法的難點就在於它的邏輯性,一般設計 遞歸算法需要考慮以下幾點:
-
- 明確遞歸的終止條件
- 提取重復的邏輯,縮小問題的規模不斷遞去
- 給出遞歸終止時的處理辦法
五、遞歸算法的經典實例
一一問題定義即為遞歸定義
- 階乘
- 斐波納契數列
- 楊輝
一一問題應用遞歸算法來解決
- hanoi塔問題
一一部分數據結構也是用遞歸來定義的