算法:斐波那契數列

    引文:

    在700多年前,意大利有一位著名數學家斐波那契在他的《算盤全集》一書中提出了這樣一道有趣的兔子繁殖問題。
    如果有一對小兔,每一個月都生下一對小兔,而所生下的每一對小兔在出生後的第三個月也都生下一對小兔。那麼,由一對兔子開始,滿一年時一共可以繁殖成多少對兔子?
    用列舉的方法可以很快找出本題的答案:
    第一個月,這對兔子生了一對小兔,於是這個月共有2對(1+1=2)兔子。
    第二個月,第一對兔子又生了一對兔子。因此共有3對(1+2=3)兔子。
   到第三個月,第一對兔子又生了一對小兔而在第一個月出生的小兔也生下了一對小兔。所以,這個月共有5對(2+3=5)兔子。
    到第四個月,第一對兔子以及第一、二兩個月生下的兔子也都各生下了一對小兔。因此,這個月連原先的5對兔子共有8對(3+5=8)兔子。
……
    可列表如下:

月份
1
2
3
4
5
6
7
8
9
10
11
12
兔子總對數
2
3
5
8
13
21
34
55
89
144
233
377

   就是說,由一對兔子開始,滿一年時一共可繁殖成377對小兔。
   特別值得指出的是,數學家斐波那契沒有滿足於這個問題有了答案。他進一步對各個月的兔子對數進行了仔細觀察,從中發現了一個十分有趣的規律,就是後面一個月份的兔子總對數,恰好等於前面兩個月份兔子總對數的和,如果再把原來兔子的對數重複寫一次,於是就得到了下面這樣的一串數:
   1,1,2,3,5,8,13,21,34,55,89,144,233,377……
   後來人們爲了紀念這位數學家,就把上面這樣的一串數稱作斐波那契數列,把這個數列中的每一項數稱作斐波那契數。斐波那契數具有許多重要的數學知識,用途廣泛。它引起了數學界的普遍關注,爲了促進對它的研究,在美國還專門出版了一本雜誌叫做《斐波那契季刊》,登載對這個數列的研究成果和最新發現。

    php實現

function f($n){
 if($n == 1 || $n == 2){
   //如果n爲1或者2,返回1 
       return 1;
 }else{
   //如果n >= 3,f(n) = f(n-1) + f(n-2);
       return f($n - 1) + f($n - 2);
 }
}
//輸出:11以內的斐波那契數列
$n = 11;
for($i = 1; $i < n; $i ++ ){
  echo f($i);
  echo '<br/>';
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章