- 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,走完n阶台阶共有多少种不同的走法?
- 假设n阶台阶有f(n)种走法,第1步有2种走法
- 如果上1阶,那就还剩n - 1阶,共f(n - 1)种走法
- 如果上2阶,那就还剩n - 2阶,共f(n - 2)种走法
- 所以f(n) = f(n - 1) + f(n - 2)
int climbStairs(int n) {
if (n <= 2) return n;
return climbStairs(n - 1) + climbStairs(n - 2);
}
- 跟斐波那契数列几乎一样,因此优化思路也是一致的
int climbStairs(int n) {
if (n <= 2) return n;
int first = 1;
int second = 2;
for (int i = 3; i <= n; i++) {
second = first + second;
first = second - first;
}
return second;
}
来源:CSDN
作者:玉树临风你卓哥
链接:https://blog.csdn.net/songzhuo1991/article/details/103235763