有一對小兔子,小兔子過z個月長大,一對大兔子x個月生y對小兔子,求n個月後的兔子總對數。
當xyz都是1的時候,f(n)=f(n-1)+f(n-2)
問題一:
有一對小兔子,小兔子過5個月長大,一對大兔子3個月生4對小兔子,求n個月後的兔子總對數。
f(n)表示n個月後的兔子總數
f(n)=n那個月原有的兔子+n那個月新生的兔子
n那個月原有的兔子是:f(n-1)
n那個月新生的兔子是:n-x那個月成熟的兔子,也就是n-x-z那個月所有的兔子,因為n-x-z那個月所有的兔子在n-x那個月的時候都成熟了
故f(n)= f(n-1)+ f(n-x-z) * (y/x);這裡必須是* (y/x),這是每個月生產的。(那個月成熟的兔子在乙個月裡生的小兔子的個數)
這個表示式也適合於乙個月生一對的情況;
乙個月的情況可以看成成熟+不成熟,和原來的+新生的。而多個月的情況看成後一種比較好,因為看成前一種會超級麻煩。
到本題,也就是f(n)= f(n-1)+ f(n-8)*(4/3);
問題二:
有一對小兔子,小兔子過5個月長大,一對大兔子3個月生4對小兔子,求n個月後的大兔子總對數。
用f(n)表示大兔子,那麼
f(n)= 上個月的大兔子數+這個月新長成的大兔子數
上個月的大兔子數是:f(n-1)
這個月新長成的大兔子數是:因為兔子需要5個月長大,所以應該是n-5個月那個月的新出生的兔子,
n-5個月那個月的新出生的兔子是n-5-3那個月的所有大兔子數,因為大兔子經過三個月才能有小兔子,
故f(n)=f(n-1)+f(n-5-3)*(4/3);
#include
using
namespace
std;
//前八個月的兔子總對數都是一對,inittotalrabbit[1]表示第乙個月
double inittotalrabbit[9]=;
double calctotalrabbit(int n)
//前五個月的大兔子數目為0,initbigrabbit[1]表示第乙個月的大兔子數目
double initbigrabbit[9]=;
double calcbigrabbit(int n)
int main()
return
0;}
兔子繁殖問題
問題 有一對小兔子,從出生後第3個月起每個月都生一對兔子。小兔子長到第3個月後每個月又生一對兔子。按此規律,假設沒有兔子死亡,第乙個月有一對剛出生的小兔子,問第n個月有多少對兔子?分析 這個月的兔子只有兩個 乙個 是上個月的老兔子活到了這個月,另乙個 是這個月剛出生的兔子,而這個月剛出生的兔子,個數...
遞推1 兔子問題
推出部分例項 仔細分析遞推公式,遞推公式如果印合例項,那就對了 有了遞推公式,程式設計很簡單。當xyz都是1的時候,f n f n 1 f n 2 仔細分析,想清楚了就好,想清楚了,就簡單了 1 2 有一對小兔子,小兔子過z個月長大,一對大兔子x個月生y對小兔子,求n個月後的兔子總對數。34 問題一...
經典演算法 兔子繁殖問題
有一種動物,它出生後兩天後就開始以每天乙隻得速度繁殖,假設有一天,有乙隻這樣的動物 該動物剛出生,從第三天開始繁殖後代 到第11天,共有多少只?有乙個非常明智的思考,思考過程如下 我們思考第n天的兔子是如何來的,首先第n 1天的兔子都會存活到第n天,並且不會繁殖 第n 2天的兔子都會在第n天繁殖,所...