程式設計之美2 9 斐波那契數列

2022-09-05 08:48:10 字數 799 閱讀 3803

斐波那契數列是我們在學習c語言的時候。在遞迴那一章的經典例項。當然,還會有漢諾塔的樣例。

這個問題時這樣定義的:

0 (x <= 0)

f(x)   =  1

(x == 1)

f(x - 1) + f(x - 2) (x > 1)

看到這個遞推公式後。我們非常easy能夠寫出例如以下的**:

函式宣告:

typedef long long ll;

ll dutfibonacci_1(int);

函式定義:

/*經典的斐波那契數列的遞迴解法,並且每乙個人都知道這樣的方法效率非常低*/

ll dutfibonacci_1(int n)

只是,當你輸入乙個比較大的 x 值後,你會發現,你等了非常久,還是沒有不論什麼輸出,這就是遞迴效率低的問題。遞迴是利用棧的思想,一次次的入棧算它的前乙個值,然後在一次次的出棧算它的後乙個值,最後,得到終於的值(最後乙個值)。

那麼,我們能夠知道,事實上這裡須要儲存函式的位址。各個引數的值等等一系列的操作,肯定是浪費了大量的時間和資源,所以。我們須要尋求第二種方法解決問題。

大多數遞迴的問題都是能夠利用迴圈去解決的,所以,我們能夠嘗試的寫出例如以下的迴圈求解**:

函式宣告:

ll dutfibonacci_2(int);

函式定義:

ll dutfibonacci_2(int n)

return result;

}

程式設計之美2 9 斐波那契數列

斐波那契數列是我們在學習c語言的時候,在遞迴那一章的經典例項,當然,還會有漢諾塔的例子。這個問題時這樣定義的 0 x 0 f x 1 x 1 f x 1 f x 2 x 1 看到這個遞推公式後,我們很容易可以寫出如下的 函式宣告 typedef long long ll ll dutfibonacc...

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...

迴圈斐波那契數列 斐波那契數列應用

什麼是斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144 這個數列從第3項開始,每一項都等於前兩項之和 台階問題 有一段樓梯有10級台階,規定每一步只能跨一級或兩級,要登上第10級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...