关于一个计算斐波那契数列的函数

tank784182 2011-10-26 05:25:32
好吧,新手又来求教了,看js精髓这本书关于函数记忆里有个计算斐波那契数列的例子:
var fibonacci = function (n) {
return n < 2 ? n: fibonacci (n-1) + fibonacci (n-2);
};
for ( var i = 0; i<= 10; i += 1) {
document.write('// ' + i + ': ' + fibonacci(i));
}


上面这段没问题,书上提出了一个减少计算量的改进方法:
var fibonacci2 = function () {

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;

}

问题就是:如何用这个新函数来计算呢,就像第一个函数一样 可以把结果打印出来,还有咋传参数进去呢,我试了下fibonacci2.fib(10),报错说不是函数,囧。。真心小白,球高手指教····
...全文
131 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tank784182 2011-10-26
  • 打赏
  • 举报
回复
感谢解答,不过我直接用document.write(fibonacci2(10)) 把fib的整个函数体给显示出来了。囧啊 就是显示下面这段
function (n) {

var result = memo [n];

if (typeof result !== 'number') {

result = fib(n - 1) + fib(n - 2);

memo[n] = result;

}

return result;

};

Acesidonu 2011-10-26
  • 打赏
  • 举报
回复
应该是这个fibonacci2()(10)
Acesidonu 2011-10-26
  • 打赏
  • 举报
回复
fibonacci2(10)直接用

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧