從湯姆大叔的博客裏看到了6個基礎題目:本篇是第4題 - 利用JavaScript打印出Fibonacci數(不使用全局變量)html
解題關鍵:函數
一、Fibonacci數列的規律spa
二、遞歸code
1,1,2,3,5,6,13,19,32.... //從第3項開始,每項都是前兩項之和
遞歸是一個複雜的概念,此題能夠不用遞歸解決,但題目要求不能使用全局變量,因此我只能想到遞歸方法。簡單的說,遞歸就是函數調用函數自己,但遞歸必定要有一個出口,不然就無限調用下去……下面對Fibonacci數列進行一下羅列並找規律:htm
第1項,1 第2項,第1項 + 第0項 第3項,第2項 + 第1項 ..... 依此類推,那麼可得 Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)
那麼它的出口處就在1這裏,即求的項數小於2時,直接返回1,而再也不調用本身(一旦不調用本身了,也就意味着遞歸結束)
如下是該題的實現代碼:blog
function Fibonacci(n) { //顯示Fibonacci的前n項 function Fibo(i) { //求Fibonacci的第i項 return i<2 ? i : Fibo(i-1) + Fibo(i-2); //此處定義了遞歸的規則 } for(var i=1; i<=n; i++) { console.log( Fibo(i) ); } } Fibonacci(5); //1,1,2,3,5
此題解答完畢!遞歸