LeetCode题库 70. 爬楼梯(简单)
题解
递推公式:f(x) = f(x - 1) + f(x - 2), f(1) = 1, f(2) = 2
一、递归方法
运行时间炸了,不过结果应该是对的;
class Solution {
public int climbStairs(int n) {
if(n == 0) return 0;
if(n == 1)
return 1;
else if(n == 2)
return 2;
else
return (climbStairs(n - 1) + climbStairs(n - 2));
}
}
二、循环方法
class Solution {
public int climbStairs(int n) {
int p = 0, q = 0, r = 1;
for(int i = 0; i < n; ++i){
p = q;
q = r;
r = p + q;
}
return r;
}
}
思考
- 递归能优化吗?