LeetCode算法題16:

題目描述
解題思路:其實這是一道斐波那契數(shù)列的題,假設(shè)現(xiàn)在站在第i個臺階上,那上一步到達第i個臺階共有兩種方式:一是在第i-1階臺階上,向上走1步到達第i階臺階,一是在第i-2階臺階上,向上走2步到達第i階臺階。設(shè)函數(shù)f(i)是到達第i階臺階上的所有可能方法數(shù),則有:f(i)=f(i-1)+f(i-2),這個公式是斐波那契數(shù)列的公式。
//JS代碼
var climbStairs = function(n) {
//當(dāng)n<=3時,直接返回n
if(n<=3){
return n;
}
//定義一個斐波那契數(shù)組
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];
};
//這是斐波那契數(shù)列的一種更加簡單的寫法
var climbStairs = function(n) {
var a=0,b=1;
while(n--){
c=a+b;
a=b;
b=c;
}
return c;
};