You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
题意
爬一个n阶楼梯,每次可以爬1-2步,问有多少种走法。
题解
n阶走法可分为两部分 f(n)=f(n-1)+f(n-2); n-1阶的走法再走一步,以及n-2阶的走法再走2步。
1、所以这是一个斐波那契数列,可以使用递归的方法。
2、使用迭代的方法。从第二阶开始迭代。
class Solution {
public:
int climbStairs(int n) {
if(n<0)
return 0;
int n_1=1;
int n_2=1;
for(int i=2;i<=n;i++)
{
int temp_n=n_1+n_2;
n_2=n_1;
n_1=temp_n;
}
return n_1;
}
};