一
//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;