斐波那契數列是我們在學習c語言的時候,在遞迴那一章的經典例項,當然,還會有漢諾塔的例子。
這個問題時這樣定義的:
0 (x <= 0)
f(x) = 1
(x == 1)
f(x - 1) + f(x - 2) (x > 1)
看到這個遞推公式後,我們很容易可以寫出如下的**:
函式宣告:
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 看到這個遞推公式後。我們非常easy能夠寫出例如以下的 函式宣告 typedef long long ll ll dutfib...
斐波那契數列 斐波那契數列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級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...