跳台阶,生小兔(斐波那契数列)

题目描述: 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法。
分析:
台阶数 1 2 3 4 5
方法数 1 2 3 5 8
最终你会发现规律:f(n) = f(n-1)+f(n-2) ; n>=3时
递归方法:

function methodNum(num) {
    if(num>0&&num<3){
        return num;
    }else if(num>=3){
        return methodNum(num-1)+methodNum(num-2);
    }
}

非递归方法:

function methodNum(n) {
    if(n<3){
        return n;
    }
    var res = 0;
    var resOne = 1;
    var resTwo = 2;
    for(var i=3;i<=n;i++){
        res = resOne+resTwo;
        resOne = resTwo;
        resTwo = res;
    }
    return res;
}

还有一种疯狂跳台阶,是普通跳台阶的升级版。
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法?
递归方法:

function tmp(num) {
    if(num===1){
        return 1;
    }else {
        return tmp(num-1)*2;
    }
}

非递归法:

function tmp(num) {
    return Math.pow(2,num-1);
}

本人写的比较简陋,具体的分析过程没写,想看的可看链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容