斐波那契數列指的是這樣一個數列 0, 1, 1, 2,3, 5, 8, 13, 21, 34, 55, 89, 144, ...對於這個數列只能說將兔子生產周期第為3月,如果生成周期變成4月這個數列肯定不是這樣的,或者說兔子還有死亡周期,在這里我是對兔子生產周期沒有限定,只要月份大於生產周期都可以計算出第month月份到底能產生多少對兔子。
Java兔子繁殖問題
斐波那契數列又因數學家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”。
一般而言,兔子在出生兩個月后,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有兔子都不死,那么一年以后可以繁殖多少對兔子?
我們不妨拿新出生的一對小兔子分析一下:
第一個月小兔子沒有繁殖能力,所以還是一對
兩個月后,生下一對小兔對數共有兩對
三個月以后,老兔子又生下一對,因為小兔子還沒有繁殖能力,所以一共是三對。
------
依次類推可以列出下表:
幼仔對數=前月成兔對數
成兔對數=前月成兔對數+前月幼仔對數
總體對數=本月成兔對數+本月幼仔對數
可以看出幼仔對數、成兔對數、總體對數都構成了一個數列。這個數列有關十分明顯的特點,那是:前面相鄰兩項之和,構成了后一項。
這個數列是意大利中世紀數學家斐波那契在<算盤全書>中提出的,這個級數的通項公式,除了具有a(n+2)=an+a(n+1)的性質外,還可以證明通項公式為:an=(1/√5)*{[(1+√5)/2]^n-[(1-√5)/2]^n}(n=1,2,3.....)。
如果兔子要第四個月才開始生產小兔子,那么結構圖應該變成這樣
以上這些算法都沒有應用到面向對象的思維方式去解決,如果生成周期變成4月這個數列肯定不是這樣的,或者說兔子還有死亡周期,在這里我是對兔子生產周期沒有限定,只要月份大於生產周期都可以計算出第month月份到底能產生多少對兔子。實際中可以將兔子定於為一個Rabbit對象,將其生產周期、死亡周期定義為屬性,可能這個能有更好的效果。