代码改变世界

关于JS递归函数求斐波那契数列两种实现方法

2019-10-14 20:42  覃振鸿  阅读(1352)  评论(0编辑  收藏  举报

百度已经解释的很详细了,但是不写注释还真是看不懂,递归,就直接套公式了,for循坏,我们就用EXCEL看一下规律

可以看到B是A+B的和,A往后就是B的值,所以我们需要第三个变量来保存他们的和,取出B的值给A,再把C的值给B,以此类推,上代码

//F(n)=F(n-1)+F(n-2)
console.log('---------------递归实现---------------')
function getFib(x) {
    if(x==1 || x==2){//
        return 1;
    }
    return getFib(x-1)+getFib(x-2);
}
for(var i=1;i<=10;i++){
    console.log('斐波那契数第'+i+'列:'+getFib(i));
}
console.log('---------------FOR实现---------------')
//for循坏版
function demo(n) {
    var a=1;
    var b=a;
    var c;
    for (var  i = 1 ; i <= n ; i++){
        if(i<3){
            console.log('斐波那契数第'+i+'列:'+a);
            continue;
        }
        else {
        c=a+b;//c就是第二个B的值
        a=b;//原来B的值赋给A
        b=c;//他们的和变成B
        console.log('斐波那契数第'+i+'列:'+b);
        }
    }
}
demo(10);