题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路:
把跳上n级台阶的方法记为f(n),有两种跳法:
第一次跳一级,剩下的就是n-1级台阶的跳法f(n-1);
第一次跳两级,剩下的就是n-2级台阶的跳法f(n-2);
所以:f(n)=f(n-1)+f(n-2)
- 第一种:递归
- 第二种:循环代替递归(时间复杂度是O(n))
代码1:
public class Solution {
public int JumpFloor(int n) {
if(n<=0){
return 0;
}
if(n==1){
return 1;
}
if(n==2){
return 2;
}
return JumpFloor(n-1)+JumpFloor(n-2);
}
}
代码2:
public class Solution {
public int JumpFloor(int n) {
if(n<=0){
return 0;
}
if(n==1){
return 1;
}
if(n==2){
return 2;
}
int add1=2;
int add2=1;
int sum=0;
for(int i=3;i<=n;i++){
sum=add1+add2;
add2=add1;
add1=sum;
}
return sum;
}
}