刷題演算法 斐波那契數列的應用

2021-07-09 21:37:13 字數 1066 閱讀 3435

斐波那契以兔子繁殖為切入,提出乙個古典問題: 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 

其數列是0、1、1、2、3、5、8、13、21、34、……

在數學上,斐波納契數列以如下被以遞迴的方法定義: f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n≥2,n∈n*)

我剛好前幾天看到google的乙個面試題,題目是這樣的:

假設你正在爬m階樓梯,每次你只能爬一階或者兩階,你能有多少種不同的方法爬到樓頂部?

其實,這完全可以運用到斐波那契數列。

以a(m)表示m階階梯所需要的step。

那麼快爬完樓梯的時候,最後一步無非兩種情況,一種:只需要邁一階即可。另一種:只需要邁兩階即可爬完樓梯。

於是a(m)=a(m-1)+a(m-2)

a(m-1)=a(m-2)+a(m-3)

a(m-2)=a(m-3)+a(m-4)

………而當m=1時 a(1)=1 m=2時 a(2)=2

這樣便可以遞迴出a(3),a(4)……直到a(m)

符合斐波那契數列特點:f(n)=f(n-1)+f(n-2)

此題便解出。

爬樓梯問題的推廣:

特例: 那麼如果步子不僅僅是一階或者二階,假設一步至多邁m階,

則 a(m)=a(m-1)+a(m-2)+…..+a(1)+a(0)

a(0)表示之前沒邁一步,之後一步邁完m階

a(0)=1;a(1)=1,a(2)=2;

遞推得: a(3)=a(2)+a(1)+a(0) =4

a(4)=a(3)+a(2)+a(1)+a(0) =8

a(5)=a(4)+a(3)+a(2)+a(1)+a(0) =16

…得a(m)=2^(m-1);

推廣: m階樓梯,假設一步邁n階

當(1《n《m) 即一步至多m階,同特例 由特列知 a(m)=2^(m-1);

當(1《na(m)=a(m-1)+a(m-2)+…..+a(m-n)

遞迴可得a(m)

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

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

斐波那契數列(藍橋刷題)

問題描述 fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。輸入格式 輸入包含乙個整數n。輸出格式 輸出一行,包含乙個整數,表示fn除以10007的餘數。說明 在本題中,答案是要求fn除以10...

斐波那契數列應用

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