javascript 闭包实现斐波那契数列生成器

几个点,一个是生成器 https://developer.mozilla.org/… 另外一个是闭包

function fibo() {
    var a = 0;
    var b = 1;
    function gen() {
        var res = (a < b) ? a : b;
        if (a < b) {
            a = a + b;
        } else {
            b = a + b;
        }
        return res;
    }
    return gen;
}
var fibogen = fibo();
for (var i = 1; i < 10; i++) {
    console.log(fibogen());
}

输出如下

 0
2 1
 2
 3
 5
 8
 13
 21

那如果不用闭包呢,那就是上面贴的那个文章的里面的 yield 了

==============

2017-3-15 20:50:03 一个更简单的

function fibo() {
    var a = 0;
    var b = 1;
    function gen() {
        var res = a;
        a = b;
        b = res + b;
        return res;
    }
    return gen;
}
var fibogen = fibo();
for (var i = 1; i < 10; i++) {
    console.log(fibogen());
}

Leave a Reply

Your email address will not be published. Required fields are marked *