斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、55……
从第3项开始,每一项都等于前两项之和。
js实现如下:
function fibo() {
var a = 0;
var b = 1;
function gen() {
if (a < b) {
a = a + b;
} else {
b = a + b;
}
var res = (a < b) ? a : b;
return res;
}
return gen;
}
var fibogen = fibo();
for (var i = 0; i < 10; i++) {
console.log(fibogen());
}
原理:将a、b两个变量的和a+b存入较小的那个变量中,输出小的那个变量。
另一种方法:(效率更高一些)
function fibo() {
var a = 0;
var b = 1;
function gen() {
var res = a;
a = b;
b = res + b;
return a;
}
return gen;
}
var fibogen = fibo();
for (var i = 0; i < 10; i++) {
console.log(fibogen());
}