Java演算法之「兔子問題」

2021-07-23 15:36:05 字數 989 閱讀 3618

有乙隻兔子,從出生後第3個月起每個月都生只兔子,小兔子長到第三個月後每個月又生乙隻兔子,假如兔子都不死,問每個月的兔子總數為多少?

分析:從第乙個兔子開始,第1個月1只兔子,由於「長到第三個月後每個月又生乙隻兔子」,所以第2個月也是1只兔子,第3個月時可以生乙隻兔子,所以總數為2只,這時,其中有乙隻是以後每個月都可以生乙隻兔子的老兔子,另乙隻是乙隻新兔子,它只有在第三個月的時候才可以每個月生乙隻兔子;這樣的話,第4個月的兔子總數為3只,…以此類推,從第1個月到第12個月的兔子總數分別為:1,1,2,3,5,8,13,21,34,55,89,144

如下**:

由於每個新兔子隔乙個月才可以生新兔子,所以,c月的兔子數為:c=ax2+(b-a);其中,ax2為到c月時a月時的兔子都生育了乙個,(b-a)為b月新生的兔子數,這些兔子到c月還不能生育,二者相加為c月的兔子總和,簡化一下為c=a+b;

到此,得出了乙個結論,c=a+b/d=b+c/e=c+d…,即,每月的兔子總數為前兩個月的兔子數之和

翻譯成**為:

int sum_rubbit;//每月的兔子總數

int new_rubbit = 1;//第乙個月的兔子數

int old_rubbit = 1;//第二個月的兔子數

for (int i = 3; i <= 12; i++)

這裡還可以使用遞迴的方法來做:

//遞迴方法實現

public

static

intgetrubbitnum(int month)else

}

遞迴的思路和上面是一致的,即,第1、2月兔子數分別為1,第三個月為1、2月之和,第四月為2、3月之和,第五月為3、4月之和。

end

Java 兔子繁殖迭代問題

某農場引進乙隻兔子,該兔到了第3個月就會產下乙隻小兔,從此之後每月產下乙隻小兔。而小兔也一樣,到了出生後的第三個月也會產下乙隻小兔,之後每個月都會產下乙隻小兔,以此類推,8個月後這個農場一共有多少只兔子?使用遞迴演算法 斐波那獎數列 1,1,2,3,5,8,13,21,34,55,89,144,23...

經典演算法 兔子繁殖問題

有一種動物,它出生後兩天後就開始以每天乙隻得速度繁殖,假設有一天,有乙隻這樣的動物 該動物剛出生,從第三天開始繁殖後代 到第11天,共有多少只?有乙個非常明智的思考,思考過程如下 我們思考第n天的兔子是如何來的,首先第n 1天的兔子都會存活到第n天,並且不會繁殖 第n 2天的兔子都會在第n天繁殖,所...

兔子生兔子問題

問題描述 兔子生兔子問題 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對 兔子,假如兔子都不死,問每個月的兔子總數為多少?假設我們要求列印出第乙個月到第二十個月的兔子總數 可以得出規律 第乙個月的兔子總數是1,第二個月的兔子總數是1,從第三個月開始,兔子總數是前...