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?
f (n) = f (n-1) + f (n-2),其中f(0)=1,f(-1)=0
class Solution {
public:
int climbStairs(int n) {
if(n==0)
return 0;
int prev=0, cur=1;
for(int i=1;i<=n;i++)
{
int temp=cur;
cur+=prev;
prev=temp;
}
return cur;
}
};Fibonacci Sequence计算公式
class Solution {
public:
int climbStairs(int n) {
double s=sqrt(5);
return floor((pow((1+s)/2,n+1)-pow((1-s)/2,n+1))/s);
}
};
本文深入探讨了使用Fibonacci序列解决爬楼梯问题的方法,并通过两种不同的算法实现来提升效率:一种是经典的递归方式,另一种则是利用数学公式进行优化。文章详细解释了每一步背后的原理,并通过实例演示如何应用这些方法来解决问题。
503

被折叠的 条评论
为什么被折叠?



