這個是我面試的時候遇到的一道面試題,當時面試官要我共享螢幕,以便看到我的編碼過程,我雖然之前了解過,但是印象不深,久而久之就忘記了,所以,突然一下叫我寫,理所當然也就沒有寫出來。不過讓我意識到,很多公司對於底層原理和基礎性的東西要求比較高,寫**的過程並不僅僅是趕專案的過程,也應該是記錄思維變化的過程。所以,我對它做了乙個整理。
斐波拉契數列,最開始是數學家列昂納多·斐波那契以兔子繁殖的例子引進:一對大兔子每個月生一對小兔子。每對小兔子乙個月後變成大兔子,再過乙個月也開始生小兔子,假設出生的兔子都不死亡,那麼,一年後有多少兔子?
兔子繁殖對數記錄
月份1月
2月3月
4月5月
6月7月
8月9月
10月11月
12月大兔子對數11
2358
1321
3455
89144
小兔子對數01
1235
8132134
5589
從表中可以可看出:
每個月小兔子對數=上個月大兔子對數
每個月大兔子對數=上個月大兔子對數+上個月小兔子對數
由此,以上兩個結論可得:
每個月大兔子對數=上個月大兔子對數+上上個月大兔子對數
一年後兔子數=144+89=233
所以,從第三月開始,每一月大兔子對數都等於前兩個月的大兔子對數之和。而每個月大兔子對數所形成的數列,就是斐波拉契數列。
即
用js**表示:
//方式一:遞迴
function
fn(n)
else
}
//方式二:遞迴(三元運算子)
function
fn(n)
//當然,如果只是適用於兔子繁殖例子,斐波拉契數列可能就不會引起這個多的關注。除了適用於兔子繁殖的例子,還適用於植物界的花瓣數,現在社會上的**等例子。方式三:迭代
function
fn(n)
return
arr
}
斐波拉契數列
斐波拉契數列 1 1 2 3 5 8 13 21 34.其中每乙個數字都是前兩個數字的和。遞迴計算 long fibonacci int n 非遞迴計算 long fibonacci int n return result 這個函式的遞迴實現使用了雙重遞迴 double recursion 函式對本...
斐波拉契數列
編寫彙編程序列印1 1000的斐波拉契數列 原始碼assume cs code,ss stack,ds data data segment fibo dw 0,1,64 dup 0 str db the fibo list is 0ah,0dh,data ends stack segment db ...
斐波拉契數列
斐波拉契數列 這個數列從第三項開始,每一項都等於前兩項之和。已知斐波拉契數列的前兩項都是1,我們定義求斐波拉契數列的第n項 n 50 的函式為fbnq,請補充完成對fbnq函式的定義。輸入格式 共一行,為乙個正整數。輸出格式 共一行,為乙個正整數。輸入樣例 7輸出樣例 13 斐波拉契數列 def f...