利用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);
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- java-WEB中的监听器Lisener
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- GUI - Web前端开发框架
- Extjs4.0 最新最全视频教程
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- MyEclipse Web Project转Eclipse Dynamic Web Project
- axis备忘
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- IE8开发人员工具教程(二)
- Erlang实现的一个Web服务器代码实例
- 在flex中执行一个javascript方法的简单方式