兔子問題:
有個(gè)人想知道慌洪,一年之內(nèi)一對(duì)兔子能繁殖多少對(duì)?于是就筑了一道圍墻把一對(duì)兔子關(guān)在里面凑保。已知一對(duì)兔子每個(gè)月可以生一對(duì)小兔子冈爹,而一對(duì)兔子從出生后第3個(gè)月起每月生一對(duì)小兔子。假如一年內(nèi)沒有發(fā)生死亡現(xiàn)象欧引,那么频伤,一對(duì)兔子一年內(nèi)(12個(gè)月)能繁殖成多少對(duì)?(兔子的規(guī)律為數(shù)列芝此,1憋肖,1,2婚苹,3岸更,5,8膊升,13怎炊,21)
其實(shí)這就是斐波拉切數(shù)列:一個(gè)數(shù)列當(dāng)前項(xiàng)等于前兩項(xiàng)之和。
所以,要求第12個(gè)月的值评肆,也就是求數(shù)列第12項(xiàng)的值债查;解決思路:
1.定義三個(gè)變量,一個(gè)變量是數(shù)列第一項(xiàng)值瓜挽,一個(gè)變量是第二項(xiàng)值盹廷,一個(gè)變量是中間變量;
2.為了依次得到之后的值久橙,也就是最開始的第二項(xiàng)值變成了之后的第一項(xiàng)值(需要把之前的第二項(xiàng)值存儲(chǔ)在中間變量中)速和,之后的第二項(xiàng)值變成了之前兩項(xiàng)值的和。
js代碼如下:
//1.定義三個(gè)變量剥汤,然后兩個(gè)初始化值颠放。第三個(gè)作為存儲(chǔ)使用
var temp;
var num1 = 1;
var num2 = 1;
//2.先把之前的第二個(gè)變量存儲(chǔ)在中間變量,然后把之后的第二個(gè)變量賦值為之前兩個(gè)變量的和
for(var i=1;i<=10;i++){
temp = num2;
num2 = num1 + num2;
//3.把存儲(chǔ)的中間變量賦值給之后的第一個(gè)變量吭敢。
num1 = temp;
//4.執(zhí)行10次碰凶。(因?yàn)榍皟身?xiàng)不需要計(jì)算,所以只需要執(zhí)行10次)
}
console.log(num2);