青蛙跳台階問題

2021-06-29 15:29:52 字數 1995 閱讀 7930

題目:乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。

我的思路:最開始我的思路是把這個看成是乙個數學問題,n=i*1+k*2先把所有可能滿足這個公式的i和k求出來。然後在對i和k做排列組合。很明顯i的範圍應該是0

public int jumpfloor(int target)  else 

}} return step;

} public int ******circle(int num)

for (int i = 1; i <= num; i++)

return sum;// 返回階乘的值

}

小結:筆者這個解法雖然感覺思路比較清晰,但是感覺不是很巧妙!(其實數字算出來你會發現其實是乙個fibo數列)沒有亮點,但是這種解法當2變成其他數的時候是通用的

下面我們來看看網上大家的解法(這是一道劍指offer上面的題目),首先是結合fibonacci數列來解決問題

分析:1)當n = 1, 只有1中跳法;當n = 2時,有兩種跳法;當n = 3 時,有3種跳法;當n = 4時,有5種跳法;當n = 5時,有8種跳法;.......

規律類似於fibonacci數列

2)如果n=1,總步數f(n)=1;如果n=2,總步數f(n)=2。

另一方面,當n>=3,當前還剩的步數f(n),如果接下去跳一步,那麼還剩下的步數是f(n-1);如果接下去跳兩步,那麼還剩下的步數是f(n-2),故:f(n)=f(n-1)+f(n-2)。

int fib(int n)

if (1 == n)

else if (2 == n)

else

}

-------------------------------------

----------分割線---------------------

-------------------------------

---------------------------

下面是這道題的變化題目,非常不錯!

問:乙隻青蛙一次可以跳上1級台階,也可以跳上2 級……它也可以跳上n 級,此時該青蛙跳上乙個n級的台階總共有多少種跳法?

用fib(n)表示青蛙跳上n階台階的跳法數,青蛙一次性跳上n階台階的跳法數1(n階跳),設定fib(0) = 1;

當n = 1 時, 只有一種跳法,即1階跳:fib(1) = 1;

當n = 2 時, 有兩種跳的方式,一階跳和二階跳:fib(2) = fib(1) + fib(0) = 2;

當n = 3 時,有三種跳的方式,第一次跳出一階後,後面還有fib(3-1)中跳法; 第一次跳出二階後,後面還有fib(3-2)中跳法;第一次跳出三階後,後面還有fib(3-3)中跳法

fib(3) = fib(2) + fib(1)+fib(0)=4;

當n = n 時,共有n種跳的方式,第一次跳出一階後,後面還有fib(n-1)中跳法; 第一次跳出二階後,後面還有fib(n-2)中跳法..........................第一次跳出n階後, 後面還有                fib(n-n)中跳法.

fib(n) = fib(n-1)+fib(n-2)+fib(n-3)+..........+fib(n-n)=fib(0)+fib(1)+fib(2)+.......+fib(n-1)

又因為fib(n-1)=fib(0)+fib(1)+fib(2)+.......+fib(n-2)

兩式相減得:fib(n)-fib(n-1)=fib(n-1)         *****》  fib(n) = 2*fib(n-1)     n >= 2

遞迴等式如下:

**特簡單,但是分析就不是這麼簡單的事情了:

public int jumpn(int n) 

return 2 * jumpn(n - 1);

}

其他想法目前還沒有想出來,先貼著吧。

青蛙跳台階問題

1 乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。2 乙隻青蛙一次可以跳上1級台階,也可以跳上2 級 它也可以跳上n 級,此時該青蛙跳上乙個n級的台階總共有多少種跳法?分析 1 當n 1,只有1中跳法 當n 2時,有兩種跳法 當n 3 時,有3種跳...

青蛙跳台階問題

問題一 有乙隻青蛙,需要跳上100級台階。青蛙每次可以調一級或者兩級台階。問青蛙有多少種方式可以跳100級台階。思路 逆推 當青蛙站在100級台階上時,那它跳上100級時有可能是從99級跳一級上來的,也可能是從98級跳兩級跳上來的 從98級跳兩個一級包括在從99級跳一級情況內,所以不予考慮 所以f ...

青蛙跳台階問題

題目如下 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 1,解題思路,假設只有乙個台階或者有兩個台階,算一下有幾種跳法,然後從中找他們之間的聯 假設台階很少,計算有多少種跳法 假設的台階數 計算的跳法數 1 個 1 種 2 個 2...