欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

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

程序员文章站 2022-04-08 15:26:57
...
创建一个函数生成器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)!