前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >斐波那契数列与IE9

斐波那契数列与IE9

作者头像
菩提树下的杨过
发布2018-01-23 16:27:23
6900
发布2018-01-23 16:27:23
举报

百度什么都知道:当然也包括斐波那契(Fibonacci)数列

在一般算法教材中,把Fib数列都是当做递归的经典示例来讲解的:

javascript的写法如下: 

代码语言:javascript
复制
//递归法(计算到fib(40)时浏览器就挂掉了)
function fib(n){	
	if (n<=2){
		return 1;
	}	
	return fib(n-1) + fib(n-2);
}

在IE9以下的IE浏览器中,跑到fib(40)基本上浏览器就罢工了,比如:

代码语言:javascript
复制
for(var j=1;j<=40;j++){
	document.write("fib(" + j +  ")=" + fib(j) + "<br />");
}

但是在IE9下,居然能挺过来,看来IE9对javascript引擎的优化确实效果不错

当然,这个数列除了递归,还有其它非递归的解法,一并贴在这里收录一下:

代码语言:javascript
复制
//递归法(计算到fib(40)时浏览器就挂掉了)
function fib(n){	
	if (n<=2){
		return 1;
	}	
	return fib(n-1) + fib(n-2);
}


for(var j=1;j<=40;j++){
	document.write("fib(" + j +  ")=" + fib(j) + "<br />");
}


document.write("<hr />");

//非递归法1
function fib2(n){
	var temp=i=f1=f2=1;	
	if (n<=2){
		return 1;
	}
	else
	{
		for(i=3;i<=n;i++){
			temp = f1+f2;
			f2=f1;
			f1=temp;
		}
		return temp;
	}
}

//测试
for(j=1;j<=40;j++){
	document.write("fib2(" + j +  ")=" + fib2(j) + "<br />");
}

document.write("<hr />");

//非递归法2
function fib3(n){
	if (n<=2){
		return 1;
	}
	var x=0,y=1;
	for (var j=1;j<n;j++) {
		y = x + y;
		x = y - x;	
	} 
	return y;
}

//测试
for(j=1;j<=40;j++){
	document.write("fib3(" + j +  ")=" + fib3(j) + "<br />");
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2010-10-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档