LeetCode算法题16:
解题思路:其实这是一道斐波那契数列的题,假设现在站在第i个台阶上,那上一步到达第i个台阶共有两种方式:一是在第i-1阶台阶上,向上走1步到达第i阶台阶,一是在第i-2阶台阶上,向上走2步到达第i阶台阶。设函数f(i)是到达第i阶台阶上的所有可能方法数,则有:f(i)=f(i-1)+f(i-2),这个公式是斐波那契数列的公式。
//JS代码
var climbStairs = function(n) {
//当n<=3时,直接返回n
if(n<=3){
return n;
}
//定义一个斐波那契数组
var dp=[];
dp[1]=1;
dp[2]=2;
dp[3]=3;
for(var i=3;i<=n;i++){
dp[i]=dp[i-1]+dp[i-2];
}
return dp[n];
};
//这是斐波那契数列的一种更加简单的写法
var climbStairs = function(n) {
var a=0,b=1;
while(n--){
c=a+b;
a=b;
b=c;
}
return c;
};