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

s1113106.jpg斐波那契数列作为树形递归的例子,本书指出了缺点:虽然它是树形递归的经典范例,但是用递归求斐波那契数是很烂的方法。因为产生了过多的冗余的计算。(请见译书第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);

转载于:https://www.cnblogs.com/georgewing/archive/2009/10/13/1582525.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值