也谈一下关于兔子的问题
看大家讨论的那么激烈,也来试一下,
原地址:http://www.cnblogs.com/zuozuo/archive/2011/09/18/2180426.html
题目:
一对小兔子一年后长成大兔子;一对大兔子每半年生一对小兔子。大兔子的繁殖期为4年,兔子的寿命是6年。假定第一年年初投放了一对小兔子,试编程计算,第n年末总共会有多少对兔子。n由键盘输入。(用递归哦)
刚开始搞不清楚"繁殖期为4年"是什么意思,最后想了一下应该是可以生四年的小兔吧。不过不知道为什么博主的程序中只有6.5年,而不是7年,如果是6.5年,那也是84只,看一下载图先
下面是程序:
1 int Year = 7;
2 int[] rabArr = new int[12];
3 double a = 0;
4
5 private void Rabbit(int year)
6 {
7 if (year <= 0)
8 {
9 return;
10 }
11
12 int newRabbit = 0;
13
14 for (int i = 11; i > 0; i--)
15 {
16 if (i >= 2 && i <= 9)
17 {
18 newRabbit += rabArr[i];
19 }
20 rabArr[i] = rabArr[i - 1];
21 }
22 rabArr[0] = newRabbit;
23 Rabbit(year - 1);
24 }
25
26 因为是以半年为单位,所以调用时就这样
27 rabArr[0] = 1; //初始化
28
29 调用,
30 Rabbit(Year * 2);
31 最后数组rabArr 中全部加起来即为总和。
2 int[] rabArr = new int[12];
3 double a = 0;
4
5 private void Rabbit(int year)
6 {
7 if (year <= 0)
8 {
9 return;
10 }
11
12 int newRabbit = 0;
13
14 for (int i = 11; i > 0; i--)
15 {
16 if (i >= 2 && i <= 9)
17 {
18 newRabbit += rabArr[i];
19 }
20 rabArr[i] = rabArr[i - 1];
21 }
22 rabArr[0] = newRabbit;
23 Rabbit(year - 1);
24 }
25
26 因为是以半年为单位,所以调用时就这样
27 rabArr[0] = 1; //初始化
28
29 调用,
30 Rabbit(Year * 2);
31 最后数组rabArr 中全部加起来即为总和。