斐波那契數列

2021-07-10 02:07:54 字數 2116 閱讀 1889

歡迎**。

1,1,2,3,5,8......

也就是說,除了第乙個和第二個元素外,後面的元素的值均為其前兩個元素值的和。但在我印象中,老師從來沒有介紹過這個數列的通項公式(即乙個數學表示式能清晰的表達出它的規律)。到了大學的時候,作為電子或者計算機相關學科的同學們,會學習c語言的相關知識,那個時候,典型的程式設計題,也會拿 斐波那契 數枚舉例。

首先,我們可以根據斐波那契數列的規律,得出它的推導公式:

然後,我們根據推導公式,很容易用c語言實現其演算法

int result(int index) 

return result(index - 1) + result(index - 2);

}

緊接著的工作就是呼叫即可:

int main(int argc, const char * argv)
我們可以嘗試傳入不同的數值,便可以得到相應的結果。但是如上例中,當我嘗試得到 斐波那契 數列的第45個位置的值時,耗時很久; 那是因為以上演算法,採用的是遞迴演算法;效率低下。 列印結果如下:

從上面的推導公式,可以看出來,我們並沒有得到fn關於n的函式,即通項公式。 上面只是利用計算機強行進行計算;但我們可以從數學的角度進一步分析 斐波那契 數列,即嘗試得到它的通項公式!!!

一、 我們假設數列的生成函式如下:

其中 f1, f2, f3, f4... 就是斐波那契數列的值, 這裡為1,1,2,3...

二、 將上面式子分別乘以 x 和 x的平方,結果如下:『

三、 將上面式子,第乙個 + 第二個 - 第三個

得到左邊的結果:』

得到右邊的結果:

而根據文章一開頭的推導公式,我們知道 從 x的三次方之後, 其係數結果均為0, 所有右邊的最終結果就是 -f1*x, 而f1的值是1, 所有右邊的結果就是 -x.

綜上所述,我們可以得到 斐波那契 數列的生成函式:

四、 根據高中知識,我們可以知道,多次表示式的分數形式可以轉化為低次表示式的和的形式

進一步可以得到:

然後將結果帶入公式,去除掉 r 和 s,可得:

五、 級數展開公式

根據大學級數公式,我們可知:

帶入第四步中的公式可得:

於是,我們得到了 斐波那契 數列的通項公式為:

而 r 與 s又滿足條件:

所以可以計算得出:

因為,我們最終可以得出 斐波那契 數列的通項公式為:

此時,我們使用c語言重新實現,**如下:

int result2(int index)
然後觀察列印結果:

可以看出,計算結果一直,但是執行時間卻快了六萬多倍。。。

從這裡,我們可以看出,在實現程式設計的時候,可以首先考慮利用數學方法優化程式設計或者計算!!!!

斐波那契數列 斐波那契數列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級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...

斐波那契數列

1 題目描述 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項。斐波那契數列的定義如下 輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入包括乙個整數n 1 n 70 輸出 對應每個測試案例,輸出第n項斐波那契數列的值。2 這是九度上的乙個題,要求時間限制1秒,整數的...