2019-09-20

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;
};

你可能感兴趣的:(2019-09-20)