您的位置:首页 > Web前端 > JavaScript

利用JavaScript打印出Fibonacci数(不使用全局变量打印斐波那契数)

2015-09-10 15:56 453 查看
调用方式,比如输出第二十项:

outputFibonacci(20);

实现思路:通过数组作为存储对象,利用闭包递归取得想要的项的值。思路比较简单,效率问题,还望大家指正。

function outputFibonacci(lenght){
return function Fibonacci(arrays,len){
if(typeof len!=='number'||len<=1){
document.write(len);
return;
}
if(arrays.length==0){
arrays[0]=0;
arrays[1]=1;
Fibonacci(arrays,len);
}
else if(arrays.length<=len){
arrays.push(arrays[arrays.length-1]+arrays[arrays.length-2]);
Fibonacci(arrays,len);
}
else{
document.write(arrays[len]);
}
}([],lenght);
}
稍作完善,参考《The Good Parts》 代码量简直天壤之别啊!!!
function outputFibonacci(n){
return n<2?n:outputFibonacci(n-1)+outputFibonacci(n-2)
}
然而如上的效率较低,再进行优化后

function outputFibonacci(n){
var memo=[0,1];
var fib = function (n){
var result=memo
;
if(typeof result!=='number'){
result=fib(n-1)+fib(n-2);
memo
=result;
}
return result;
};
return fib;
}
调用方式略有不同

outputFibonacci()(20);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息