斐波那契數列簡單算法


  談到斐波那契數列,可能是算法中經典的算法之一了。讓我們先來看看斐波那契數列的由來:

  Fibonacci’s original question:
    1.Suppose that you are given a newly-born pair of rabbits, one male, one female.
    2.Rabbits are able to mate at the age of one month so that at the end of its second month a female can produce another pair of rabbits.
    3.Suppose that our rabbits never die.
    4.Suppose that the female always produces one new pair (one male, one female) every month.

  在不考慮任何其他因素的情況下,我們認定每一只兔子在出生后的第一個月結束時,可以和其他任意異性兔子進行交配,並產下兩只一雄一雌的小兔子。由此產生的每個月的兔子的對數即為斐波那契數列。

由此,我們可以得出斐波那契數列的運算公式:

  

  通過這個公式我們可以用C++很容易的寫出求斐波那契數列中第N個數的算法代碼:

  

1 int fibonacci(int n) {
2     if (n == 0)
3         return 0;
4     if (n == 1)
5         return 1;
6     return fibonacci(n - 1) + fibonacci(n - 2);
7 }

 

  算法雖然很簡單,但是這個算法並不常用。因為當N很大時,遞歸的次數很高,浪費了很多時間,因此造成算法復雜度很高的局面。  

 

  但最神奇的是,自然界中卻存在着很多符合斐波那契數列的例子:

  

  花瓣數中的斐波那契數:大多數植物的花,其花瓣數都恰是斐波那契數。例如,蘭花、茉利花、百合花有3個花瓣,毛茛屬的植物有5個花瓣,翠雀屬植物有8個花瓣,萬壽菊屬植物有13個花瓣,紫菀屬植物有21個花瓣,雛菊屬植物有34、55或89個花瓣。

  向日葵花盤內,種子是按對數螺線排列的,有順時針轉和逆時針轉的兩組對數螺線。兩組螺線的條數往往成相繼的兩個斐波那契數,一般是34和55,大向日葵是89和144,還曾發現過一個更大的向日葵有144和233條螺線,它們都是相繼的兩個斐波那契數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM