一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
- 典型的斐波那契数列问题
递归解法
f(n)=f(n-1)+f(n-2)
public class Solution {
public int JumpFloor(int n) {
if (n == 1) return 1;
if (n == 2) return 2;
return JumpFloor(n - 1) + JumpFloor(n - 2);
}
}
- 时间复杂度:O(2的n次幂) 不建议面试写这个。
临时记录变量解法
public class Solution {
public int JumpFloor(int n) {
if(n==0||n==1) return n;
int a=1,b=1,c=0;
for(int i=2;i<=n,i++){
c=a+b;
a=b;
b=c;
}
return c;
}
}
- 时间复杂度:O(n)
- 空间复杂度:O(1)