一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级。
求总共有多少总跳法,并分析算法的时间复杂度。
//递归跳台阶
int climbStair1(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
} else if (n == 2) {
return 2;
}
return climbStair1(n - 1) + climbStair1(n - 2);
}
int climbStair2(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
}
int prevOne = 1;
int prevTwo = 1;
int result = 0;
for (int i = 2; i <= n; ++i) {
result = prevOne + prevTwo;
prevOne = prevTwo;
prevTwo = result;
}
return result;
}