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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM