当前位置:首页 » PHP技术

使用JavaScript ES6的新特性计算Fibonacci(非波拉契数列)

2018-09-14 08:16 本站整理 浏览(1)

程序员面试系列

Java面试系列-webapp文件夹和WebContent文件夹的区别?

程序员面试系列:Spring MVC能响应HTTP请求的原因?

Java程序员面试系列-什么是Java Marker Interface(标记接口)

使用JDK自带的工具jstack找出造成运行程序死锁的原因

编程面试题:编写一个会造成数据库死锁的应用

JavaScript面试系列:JavaScript设计模式之桥接模式和懒加载

面试题:用JavaScript开发一个函数,打印非波拉契数列。

我们只要记住非波拉契数列的计算公式,就不难写出来了:

F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)

我写的JavaScript代码如下:

var fib = function (a, b) {

var _current = a + b;

return {

current: _current,

next: function () {

return fib(b, _current);

}

}

}

把当前这一轮的计算结果存储到第二行的变量_current里,并通过属性current返回给调用者。返回的json对象除了current属性外,还有另一个属性next,指向一个闭包函数调用。一旦next指向的函数再次被调用,则会再次触发数列的计算。

var generator = fib(1,1);

// 前一行调用fib(1,1)计算1+1的结果为2,将2存储到_current里通过current属性返回,所以打印2

// 同时返回next函数,函数体为return fib(b, _current); 此时b为1,_current为2

console.log(generator.current);

// 一旦执行next函数,则执行其指向的return fib(b, _current); 1 + 2 = 3

var result = generator.next();

console.log(result.current); // 打印3

使用JavaScript ES6的新特性计算Fibonacci(非波拉契数列)