70. Climbing Stairs

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)。这里最直观的想法就是使用递归:

var climbStairs = function(n) {
    if (n===1) {
        return 1;
    } else if (n===2) {
        return 2;
    } else {
        return climbStairs(n-1)+climbStairs(n-2);
    }
};

但是递归里有太多重复的计算,所以会比较慢。那就使用最普通的方法一个一个加:

var climbStairs = function(n) {
    if(n===0||n==1||n==2){
        return n;
    }
    var step1 = 1;
    var step2 = 2;
    var stepn = 0;
    var i = 3;
    while(i<=n){
        stepn = step1 + step2;
        step1 = step2;
        step2 = stepn;
        i++;
    }
    return stepn;
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容