利用JavaScript列印出Fibonacci數(不使用全域變數)

來源:互聯網
上載者:User

標籤:題解   html   blog   console   不能   var   com   看到了   strong   

從湯姆大叔的部落格裡看到了6個基礎題目:本篇是第4題 - 利用JavaScript列印出Fibonacci數(不使用全域變數)

 

解題關鍵:

1、Fibonacci數列的規律

2、遞迴

 

解點1:Fibonacci數列的規律
1,1,2,3,5,6,13,19,32....  //從第3項開始,每項都是前兩項之和

 

解點2:遞迴

遞迴是一個複雜的概念,此題可以不用遞迴解決,但題目要求不能使用全域變數,所以我只能想到遞迴方法。簡單的說,遞迴就是函數調用函數本身,但遞迴一定要有一個出口,否則就無限調用下去……下面對Fibonacci數列進行一下羅列並找規律:

第1項,1第2項,第1項 + 第0項第3項,第2項 + 第1項.....依此類推,那麼可得Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)

那麼它的出口處就在1這裡,即求的項數小於2時,直接返回1,而不再調用自己(一旦不調用自己了,也就意味著遞迴結束)

 

以下是該題的實現代碼:

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

 

此題解答完畢!

利用JavaScript列印出Fibonacci數(不使用全域變數)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.