疟硬客網(wǎng)(java實現(xiàn))
問題描述:
一只青蛙一次可以跳上1級臺階脱柱,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先后次序不同算不同的結(jié)果)披摄。
問題分析:
(數(shù)學(xué)歸納總結(jié),使用斐波那契數(shù)列)
解答:這種問題一般是有規(guī)律的勇凭,跳1級臺階疚膊,只有1種方法;跳2級臺階虾标,有2種方法寓盗;跳2級臺階,有3種方法;跳4級臺階傀蚌,有5種方法基显,依次下去,跳一個n級的臺階的方法數(shù)是跳n-1級臺階的方法數(shù)與跳n-2階臺階的方法數(shù)的總和善炫。這種思路可以用逆推去想撩幽,要跳上一個n級臺階,可以從n-1級臺階跳1級箩艺,也可以從n-2級臺階跳2級窜醉,這就相當于跳上n-1級臺階的方法加上跳上n-2級臺階的方法。
注意:這個問題的規(guī)律和斐波拉契數(shù)列是一樣的艺谆。
算法實現(xiàn):
略
參考代碼:
public class Solution {
public int JumpFloor(int target) {
if (target == 0)
return 0;
int a = 0, b = 1;
int tmp = 0;
for (int i = 0; i < target; i++)
{
tmp = b;
b = a+b;
a = tmp;
}
return b;
}
}