题目描述
一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
解题思路
-
如果第一次跳的是一阶,那么还剩 n-1 阶;
-
如果第一次跳的是二阶,那么还剩 n-2 阶;
-
所以最终总跳法为:f(n)=f(n-1)+f(n-2);
-
只有一阶台阶时,f(1)=1,f(2)=2;
-
所以最终结果是一个斐波那契数列。
递归有重复计算值,用循环就可以:
public class Solution {
public int JumpFloor(int target) {
if (target <= 0)
return 0;
if (target == 1)
return 1;
if (target == 2)
return 2;
int tmp1 = 1;
int tmp2 = 2;
target -= 2;
while (target != 0) {
int tmp = tmp1 + tmp2;
tmp1 = tmp2;
tmp2 = tmp;
target--;
}
return tmp2;
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于