题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路
这是一道经典的递推题目,从第n级台阶往回推,由于它可以跳1级台阶或者2级台阶,所以它上一步必定在第(n-1)或者第(n-2)级台阶,也就是说它跳上n级台阶的跳法数是跳上n-1和跳上n-2级台阶的跳法数之和。
设跳上n级台阶有F(n)种跳法,则F(n)=F(n-1)+F(n-2) (n>2),并且F(1)=1,F(2)=2.
可以发现,这个递推式和斐波那契数列比较相似,所以实现方式是一样的。
代码实现
public class Solution {
public int JumpFloor(int target) {
if(target <= 2)
return target;
int b = 1;
int a = 2;
for(int i = 3 ; i <= target ; i ++){
a = a + b;
b = a - b;
}
return a;
}
}