描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路:
先推几阶台阶,看看有没有什么规律。每一种组合方式用数字表示,前5阶台阶如下
? ? ?? ? 一阶 ?一次 ?? ??二阶 1,1 、 2 两次 ?? ? 三阶 1,1,1、1,2/2,1 三次 ?? ? 四阶 1,1,1,1、 1,1,2、1,2,1、 2,1,1 、2,2 五次 ?? ? 五阶 1,1,1,1,1 、1,1,1,2、 1,1,2,1 、1,2,1,1 、1,2,2 、 2,1,1,1 、2,1,2 、2,2,1 八次
发觉后边几阶规律为前一阶和前两阶之和 如 五阶=四阶+三阶(8=3+5),因此可以用递归法计算
public int jumpFloor(int target) {
if(target<3){
return target;
}else{
return jumpFloor(target-1)+jumpFloor(target-2);
}
}
当然也可以用循环实现
public int jumpFloor(int target) {
int a = 0;
int b = 1;
int result = 0;
for(int i = 0; i < target; i++){
result = a+b;
a = b;
b = result;
}
return result;
}
?
|