這個是個經典問題一開始我推導的,
一階:1
二階:2
三階:3
四階:5
五階:8
六階:13
…我也就推導到6,之後找了一下規律,
1+2=3
2+3=5
3+5=8
8+5=13
我就直接寫了下面這個程式
public int jumpfloor(int target)
if(target==1)
if(target==2)
int first=1;
int last =2;
int sum = 0;
for(int i =3; i<=target;i++)
return sum;
}
現在回過頭來看看分析了一下
看網上總結的有很多,而且有很好的,有一段是這樣的,關於這個青蛙跳台階問題因為一次只能跳1或2,舉個例子,你跳到6階之前一階是不是5階或者4階,如果你跳到5階那下一跳肯定是跳1階,而如果是跳到4階那你下一跳就是2階(不要問為什麼不能從4階跳帶5階),這樣的話其實就是跳到4階的次數加上跳到5階的次數,即f(6)=f(5)+f(4)
如果還是按上面的那個思路,
一階:1
二階:2
三階:4
四階:8
五階:16
六階:32
…跳n階就和上面那個題不一樣,但是推導出來的還是有規律的
現在推導公式成了f(n)=f(n-1)*f(n-1)
如果你把這個公式再往下推導就變成了n-1個2相乘,
原理呢就是每個台階有兩種選擇,要不跳上,要不跨過,兩種選擇,而最後一階肯定是要跳上去的,所以就是n-1個2相乘,而不是n個2相乘
public int jumpfloorii(int target)
if(target==1)
if(target==2)
int first=2;
int sum = 0;
for(int i =3; i<=target;i++)
return sum;
}
青蛙跳台階問題
題目 乙隻青蛙一次可以跳上 1 級台階,也可以跳上2 級。求該青蛙跳上乙個n 級的台階總共有多少種跳法。我的思路 最開始我的思路是把這個看成是乙個數學問題,n i 1 k 2先把所有可能滿足這個公式的i和k求出來。然後在對i和k做排列組合。很明顯i的範圍應該是0 public int jumpflo...
青蛙跳台階問題
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 ...