一.题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
二.解答
f(n) = 0 (n = 0)
1 (n = 1)
2 (n = 2)
f(n - 1) + f(n - 2)
三.代码
1.递归
int jump(int n) { if (n == 0) return 0; if (n == 1) return 1; if (n == 2) return 2; return jump(n - 1) + jump(n - 2); }
2.非递归
int jumpFloor(int number){
int former1 = 1;
int former2 = 2;
int target = 0;
if (number == 0)
return 0;
if (number == 1)
return 1;
if (number == 2)
{
return 2;
}else{
for (int i = 3; i <= number; i++)
{
target = former1 + former2;
former1 = former2;
former2 = target;
}
}
printf("%d", target);
return target;
}
恭喜你通过本题
运行时间:617ms
占用内存:504k