对于“到第4年可生育”,我的理解是和不死神兔的“从出生后第3个月起每个月都生一对兔子 ”意思相似,每代新生母牛 3 年后开始生育,不是4年后开始生育(我看过很多网友按照 过四年开始生育 来算的)。
使用递归的方法比较简单,只需要着重考虑单只母牛每年的下崽情况就行,代码如下:
public class Cow{
public static int amount(int year, int amount){ //计算 这只牛(初代牛/递归传过来的小牛) 每年的下崽情况
for (int i = 1; i <= year; i++){
if (i < 4){
continue;
}else if(i >= 4 && i < 15){
amount += 1; //这只牛每年生一只小牛
amount = amount(year - i + 1,amount); //计算 这只牛本年生出的小牛 每年的下崽情况(递归的位置)
}else if(i >= 15 && i < 20){
continue; //这只牛绝育
}else if(i ==20){
amount -= 1; //这只牛死亡
}else{
continue;
}
}
return amount;
}
public static void main(String[] args) {
for (int i = 1; i <= 35; i++){
int amount = 1;
amount = amount(i,amount);
System.out.println(i + "年后牛的数量" + amount);
}
}
}
1年后牛的数量:1
2年后牛的数量:1
3年后牛的数量:1
4年后牛的数量:2
5年后牛的数量:3
6年后牛的数量:4
7年后牛的数量:6
8年后牛的数量:9
9年后牛的数量:13
10年后牛的数量:19
11年后牛的数量:28
12年后牛的数量:41
13年后牛的数量:60
14年后牛的数量:88
15年后牛的数量:128
16年后牛的数量:187
17年后牛的数量:274
18年后牛的数量:400
19年后牛的数量:584
20年后牛的数量:853
21年后牛的数量:1247
22年后牛的数量:1822
23年后牛的数量:2662
24年后牛的数量:3890
25年后牛的数量:5684
26年后牛的数量:8305
27年后牛的数量:12135
28年后牛的数量:17731
29年后牛的数量:25908
30年后牛的数量:37856
31年后牛的数量:55313
32年后牛的数量:80821
33年后牛的数量:118093
34年后牛的数量:172553
35年后牛的数量:252127