Fork me on GitHub

李可

导航

统计

javascript:算法之斐波那契数列

回到顶部

//1,1,2,3,5,8,13,21这个数列 斐波那契 数列(肥波哪弃)
//得到第9项是几?
/*******************************111111111递归的思想***********************************/
function digui(index){
	//index-2=0 index的最小值是3  
	if (index<0) { //负数为0 我自己写的
		return 0;
	}
	if (index<=2) {//第一项 第二项都为1,直接范围内 都返回1  终止条件 这是第二步!!!
		return 1;
	}
	return digui(index-1)+digui(index-2);//先看后面的 几项,当前项=前一项+前二项 这是第一步!!!!
}
console.log(digui(-1));//0
console.log(digui(7));//13
console.log(digui(8));//21
回到顶部

/*******************************2222222迭代(循环)的思想***********************************/
/*
反正不好理解,记住就好了。
1 1 2 三个数的话,前2个数 ,1和1,需要循环1次 得到2
1 1 2 3 四个数的话,前3个数 ,1和1和2,需要循环2次(在上次循环次数+再和第三个数循环一次)  得到结果3
....    n个数需要循环n-2次

3个值的故事,加上 循环次数 的搞鬼

//索引必须从3开始最好了(包含),因为已经设置 1 2了
//index为1 2,是不对的 因为循环没走 我还是返回的thirdnumResult=0;
*/
function forloop(index){   //刚
	var firstnum=1; //第一个值
	var secondnum=1;//第二个值
	var thirdnumResult=0;//结果  第三个值
	for (var i = 0; i < index-2; i++) {  //循环1次,得到第三个数  2次得到第四个数    index-2次得到第index个数
		thirdnumResult=firstnum+secondnum;  

		firstnum=secondnum;       //现在的3个值的第一个,已经变成了原来三个中的第二个
		secondnum=thirdnumResult;//现在的3个值的第二个,已经变成了来三个中的第三个,结果
	}
   return thirdnumResult;
}
console.log(forloop(-1));//0
console.log(forloop(1));//0
console.log(forloop(2));//0
console.log(forloop(3));//2
console.log(forloop(8));//21
//必须从3开始最好了,因为已经设置 1 2了
//index为1 2,是不对的 因为循环没走 我还是返回的thirdnumResult=0;

posted on   李可在江湖  阅读(5961)  评论(1编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示