《计算机程序的构造和解释》读书笔记之斐波那契数列

斐波那契数列作为树形递归的例子,本书指出了缺点:虽然它是树形递归的经典范例,但是用递归求斐波那契数是很烂的方法。因为产生了过多的冗余的计算。(请见译书第25页)

TopLanguage组的Li Yang言:在阅读《代码大全》的递归一节的CODING HORROR那段,作者强调不要用递归去计算阶乘或者斐波那契数列,因为这种用法速度缓慢,而且内存使用无法预测,且可读性差。

在TopLanguage组中本人只潜水,而本人在实际情况中,IronScheme解释器、JavaScript控制台、C# 2005 编译器进行了试验。试验的过程是将斐波那契数测试,测试的数值越来越大。

结果:JavaScript控制台最先出局,IronScheme 解释器比 C# 2005 编译器慢,这是没办法的--编译比解释要快,而不是尾递归这个“优化编译”的原因。

下面是用JavaScript语言编写的斐波那契数列的程序:

var fib = function(n) {
    if (n == 0) return 0;
    if (n == 1) return 1;
    else {
        return arguments.callee(n - 1) + arguments.callee(n - 2);
    }
}
var fibObj = fib(7);
console.log(fibObj);
posted on 2009-10-13 15:25  豆豆の爸爸  阅读(672)  评论(2编辑  收藏  举报