[每日算法] 兔子的繁殖問題(包含死亡)

解決問題思路最重要
問題:
有一對小兔子,從出生後第3個月起每個月都生一對兔子。小兔子長到第3個月後每個月又生一對兔子。按此規律,假設沒有兔子死亡,第一個月有一對剛出生的小兔子,問第n個月有多少對兔子?
思路:
這個月的兔子只有兩個來源,一個來源是上個月的老兔子(個數是f(n-1)),另一個來源是這個月剛出生的兔子,而這個月剛出生的兔子,就是兩個月前的所有兔子(兩個月前的兔子個數是f(n-2)),因爲兩個月前的所有兔子,無論兩個月前就是老的,還是兩個月前剛生的,到了這個月就全部具有生育能力,每隻都可以下一對兒,所以可以得到一個遞推關係f(n) = f(n - 1) + f(n - 2)。
遞歸和循環的兩種做法:
https://blog.csdn.net/chenkaibsw/article/details/79519218

考慮兔子死亡問題:
問題:
有一對小兔子,從出生後第3個月起每個月都生一對兔子。小兔子長到第3個月後每個月又生一對兔子。另外兔子的壽命爲10個月,假設第一個月有一對剛出生的小兔子,問第n個月有多少對兔子?
思路:
兩種情況:(1) 當month <10時, 不用考慮兔子死亡情況,兔子的個數爲 f(n) = f(n-1) + f(n-2)
(2) 當month >=10時,要考慮兔子死亡問題,當月的兔子個數要減去10個月前的兔子個數。f(n) = f(n-1) + f(n-2)-f(n-10)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章