算法題(一)斐波拉契數列介紹及應用(JAVA語言)要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項爲0)。 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。

斐波拉契數列介紹
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖爲例子而引入,故又稱爲“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用。

斐波拉契數列應用

例題1

大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項爲0)。 n<=39

我述

例題2

一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。

解析:
target ==0 0 種跳法
target ==1 1 種跳法 跳1級
target ==2 2 種跳法 跳2級,跳兩次1級
target ==3 3 種跳法 有:
1、從前1級跳上來(即最後一步跳一級) target ==2
2、從前2級跳上來 (最後一步跳兩級) target ==1
類推,f(n)=f(n-1)+f(n-2)
在這裏插入圖片描述

例題3

我們可以用21的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2n的大矩形,總共有多少種方法?
n == 0 0 種方法
n == 1 1 種方法 方1個
n== 2 2 種方法 豎着放兩個,橫着放兩個
n ==3 3 種跳法 有:
1、先橫着放一個,則下面橫着的部分必須也是橫着放,剩下2
(n-2)個位置
1、先豎着放一個,剩下2*(n-1)個位置
類推,f(n)=f(n-1)+f(n-2)

在這裏插入圖片描述

例題4 變態青蛙跳

一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
錯誤的想法 (我之前的想法):對於N級來說,就是(n-1)的與(n-2)的情況加上青蛙一次性跳上來的次數,所以應該是J(n-1)+J(n-2)+1
但是實際的情況是,因爲可以跳n級,所以青蛙可以從第1級開始跳n-1到n級,從第2級開始跳n-2級到n級,所以
J(n)=J(n-1)+J(n-2)+J(n-3)+…+J(n-(n-1));
J(n-1)=J(n-2)+J(n-3)+…+J(n-(n-1));
所以J(n)=J(n-1)*2;

在這裏插入圖片描述

以上題集來自劍指offer,使用牛客網在線編譯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章