利用JavaScript打印出Fibonacci數(不使用全局變量)

湯姆大叔的博客裏看到了6個基礎題目:本篇是第4題 - 利用JavaScript打印出Fibonacci數(不使用全局變量)html

 

解題關鍵:函數

一、Fibonacci數列的規律spa

二、遞歸code

 

解點1:Fibonacci數列的規律

1,1,2,3,5,6,13,19,32....  //從第3項開始,每項都是前兩項之和

 

解點2:遞歸

遞歸是一個複雜的概念,此題能夠不用遞歸解決,但題目要求不能使用全局變量,因此我只能想到遞歸方法。簡單的說,遞歸就是函數調用函數自己,但遞歸必定要有一個出口,不然就無限調用下去……下面對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

 

此題解答完畢!遞歸

相關文章
相關標籤/搜索