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

来源:互联网 发布:mac pro使用教程 编辑:程序博客网 时间:2024/06/03 17:56

调用方式,比如输出第二十项:

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[n];if(typeof result!=='number'){result=fib(n-1)+fib(n-2);memo[n]=result;}return result;};return fib;}
调用方式略有不同

outputFibonacci()(20);



0 0
原创粉丝点击