题目一:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
参考代码:
public int JumpFloor(int target) {
if(target == 0)return 1;
if(target == 1)return 1;
int p1 = 1;
int p2 = 1;
for(int i = 2; i <= target; i++){
int t = p1 + p2;
p1 = p2;
p2 = t;
}
return p2;
}
题目二:
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路分析:
当要调n步时,第一步为1时,有f(n-1);
第一步为2时,有f(n-2);
…
所以 f(n) = f(n-1) + f(n-2) + …f(1);
而f(n-1) = f(n-2) + f(n-3) + … + f(1);
那么f(n) = f(n-1) * 2;
参考代码:
public int JumpFloorII(int target) {
if(target == 0)return 1;
int p1 = 1;
for(int i = 1; i < target; i++){//这里是小于,不是等于
p1 = p1 * 2;
}
return p1;
}
(完)