斐波那契數列的思維方式

2021-06-16 14:39:34 字數 964 閱讀 1718

斐波那契數列是演算法中的經典,也是很多網際網路企業筆試面試的熱點。當然,現在很多企業不會將原本的「動物繁殖」問題照搬過來考了,很多都是這個題目的變種。讓我們看一下斐波那契數列的題目描述和解答方式:

有乙隻動物,出生兩天之後,就開始每天繁殖乙隻,問第20天的時候,這只動物會有多少只?假設我們第一天只有乙隻,那麼第二天因為它只出生了一天,所以不能繁殖。第三天的時候,最初的那只和它生出來的乙隻,一共有三隻動物,以此類推。

這是乙個典型的遞迴題目,如果使用畫圖,或者自己去每天去推的話,肯定是一件耗時耗力的工作,並且很有可能會算錯。

這個時候,我們的思維方式應該是這樣子的,請仔細體會:

今天是第五天,動物數量等於 第四天的動物數量 + 第三天的動物數量

/*第三天的動物生下了同樣數量的動物加入到第五天的數量中*/

同理:第三天的動物數量    等於 第二天動物數量  + 第一天動物數量(新)

第四天的動物數量    等於 第三天動物數量  + 第二天動物數量(新)

第20天的動物數量    等於 第19天動物數量  + 第18天動物數量(新)

我們就很容易得到乙個遞迴的規律,f(n)=f(n-1)+f(n-2),並且有乙個跳出遞迴的條件,就是n>20。隨便找一種語言實現上面的遞迴就可以了,如下是c++的**實現:

#define num 20

#include using namespace std;

void main();

for(int i=2;i

執行結果如下:

我們應該重點關注的是,如何思考這個題目,因為在實際的面試過程中,出現了斐波那契額數的變種題目,在某500強軟體企業的測試中,要求小於一分鐘能夠做出一道類似的題目,這個必須是乙個相當優秀程式設計師的思維。勤加練習,必有所獲!

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

遞迴思維 之類斐波那契數列

斐波納契數列 fibonacci sequence 又稱 分割數列,指的是這樣乙個數列 1 1 2 3 5 8 13 21 在數學上,斐波納契數列以如下被以遞迴的方法定義 f0 0,f1 1,fn f n 1 f n 2 n 2,n n 在現代物理 準晶體結構 化學等領域,斐波納契數列都有直接的應用...