Maison  >  Article  >  interface Web  >  JavaScript趣题:斐波那契数列生成器

JavaScript趣题:斐波那契数列生成器

黄舟
黄舟original
2017-01-22 14:54:311626parcourir

创建一个函数生成器genfib(),它可以返回一个函数,每执行一次这个函数就返回斐波那契数列中的下一项,第一次执行的时候返回第一项0。

例子如下:

var fib = genfib();  
fib(); // -> returns 0  
fib(); // -> returns 1  
fib(); // -> returns 1  
fib(); // -> returns 2

拿到这个题目,我第一感觉便是在genfib()里面做文章,因为它要返回一个函数,所以在里面先return一个闭包函数,甭管里面有些啥。

然后,根据题意,咋们在genfib()里面定义一个求第N项斐波那契数列的内部函数,在这里我是用的分治递归。

那怎么结合闭包函数和这个私有函数,来达到每一次执行都返回下一项斐波那契数列的效果呢?

可以用一个内部指针变量point,它开始指向0,每次调用闭包函数的时候,我们就执行私有函数,将指针变量作为参数传进去,返回当前项的斐波那契数,然后指针变量自增。

这样就达到了目的。

function genfib(){  
    var point = 0;  
      
    var getFib = function(num){  
        if(num == 0){  
            return 0;  
        }  
        if(num == 1){  
            return 1;  
        }  
        return getFib(num-1) + getFib(num-2);  
    };  
      
    return function fib(){  
        return getFib(point++);  
    }  
}

以上就是 JavaScript趣题:斐波那契数列生成器的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn