js版的斐波那契数列,看完就疯掉了

	//"无穷"的菲波纳契数据结构
	function Fib(n, x, y)
	{
		//这里借参数x,y来保留前面的计算结果,即菲波数当前数列到n的最后两个数值
		//在实际调用中通常并不用到x、y这两个参数
		var a = x || 1;
		var b = y || 1;
		if(n == 0) b = a;

		var t;

		//计算菲波数的算法
		for(var i = 2; i <= n + 1; i++)
		{
			t = b;
			b = a + b;
			a = t;
		}

		var ret = function(n, x, y){  
			//构造一个闭包,这个闭包本身包含一个以新起点计算Fib值的函数
			x = x || a;
			y = y || b;
			return Fib(n, x, y);
		}

		//重写valueOf和toString,这样在表达式中可以直接对返回的菲波函数自动求值
		//在第五部分我们还会详细讨论到这种用法
		ret.valueOf = ret.toString = function()
		{
			return a;
		}
		return ret;
	}
	var f6 = Fib(6);  //奥妙在这里,f6是一个新起点的菲波数列函数
	dwn(f6);
	dwn(f6(4));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值