斐波那契數(shù)列(Fibonacci sequence)奋隶,又稱(chēng)黃金分割數(shù)列研侣、因數(shù)學(xué)家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入矢劲,故又稱(chēng)為“兔子數(shù)列”蒲拉,指的是這樣一個(gè)數(shù)列:1潭苞、1忽冻、2、3此疹、5僧诚、8、13蝗碎、21湖笨、34、……在數(shù)學(xué)上蹦骑,斐波納契數(shù)列以如下被以遞推的方法定義:F(1)=1慈省,F(xiàn)(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在現(xiàn)代物理眠菇、準(zhǔn)晶體結(jié)構(gòu)边败、化學(xué)等領(lǐng)域,斐波納契數(shù)列都有直接的應(yīng)用捎废,為此笑窜,美國(guó)數(shù)學(xué)會(huì)從1963年起出版了以《斐波納契數(shù)列季刊》為名的一份數(shù)學(xué)雜志,用于專(zhuān)門(mén)刊載這方面的研究成果登疗。
在js中排截,用遞歸解決問(wèn)題的時(shí)候要注意兩點(diǎn):
- 找出規(guī)律,該規(guī)律即為遞歸函數(shù)的return值
- 找出出口谜叹,即在遞歸的過(guò)程中匾寝,需要一個(gè)出口來(lái)關(guān)閉遞歸過(guò)程搬葬。
// 找出規(guī)律荷腊,斐波那契數(shù)列的規(guī)律為fb(n)=fb(n-1)+fb(n-2);(n>3)
// 找出出口 在n<=2的時(shí)候結(jié)束遞歸
function fb (n) {
if (n === 1 || n === 2) { // 2. 找出結(jié)束遞歸的出口
return 1;
}
return fb(n - 1) + fb(n - 2); // 1.將規(guī)律直接return出來(lái)
}
console.log(fb(1)); // 1
console.log(fb(2)); // 1
console.log(fb(3)); // 2
console.log(fb(4)); // 3
console.log(fb(5)); // 5
console.log(fb(6)); // 8
console.log(fb(7)); // 13
console.log(fb(8)); // 21