思路:
这道题有两种做法,一是斐波那契,二是动态规划。
代码:
class Solution {
public:
int climbStairs(int n) {
int a=1,b=1;
int num = 0;
if(n==1) return 1;
else{
for(int i=1;i<n;++i){
num = a+b;
a = b;
b = num;
}
return num;
}
}
};
代码2:
//java代码
class Solution {
public int climbStairs(int n) {
int[] dp = new int[n + 1];
dp[0] = 1;
dp[1] = 1;
for(int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
}
还有一种做法是矩阵快速幂,如图:
代码展示:
//后续补全