C語言進階遞歸調用
- 2019 年 10 月 5 日
- 筆記
我們先來了解一下什麼是遞歸?遞歸(recursion):即程式調用自身的一個編程技巧。首先,遞歸需要滿足以下2個條件:
1)有反覆執行的過程(調用自身)
2)有跳出反覆執行過程的條件(遞歸出口)那遞歸是不是就是萬能的呢?其實不然,遞歸的有優點當然就有缺點!優點:遞歸的優點是為某些編程問題提供了最簡單的解決方案。缺點:缺點是一些遞歸演算法會快速的消耗電腦的記憶體資源,另外,遞歸不方便閱讀和維護。接下來,我們用一個例子來說明遞歸的優缺點。



下面我們就來看幾個遞歸例子:
(1)階乘


(2)漢諾塔問題


(3)全排列
從n個不同元素中任取m(m≤n)個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的一個排列。當m=n時所有的排列情況叫全排列。
如1,2,3三個元素的全排列為:


(4)斐波那契數列
斐波納契數列,又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21、……這個數列從第三項開始,每一項都等於前兩項之和。
有趣的兔子問題:

一般而言,兔子在出生兩個月後,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有兔子都不死,那麼一年以後可以繁殖多少對兔子?
分析如下:

依次類推可以列出下表:


更多乾貨筆記關注微信公眾號 : 老九學堂