Java经典for循环题目:兔子繁殖问题

问题:

将一对刚出生的兔子关在围墙里,已知一对兔子每个月可以生一对小兔子,每对兔子从出生后两个月(进入青年可每月生一对)每月生一对小兔子。
*问一年后生了多少?

分析:

               月份    幼年  青年 青年 青年 青年 青年 青年   ...            对
               1月        2                                                                          1
               2                2                                                                     1=1+0
               3          2          2                                                               2=1+1
               4          2     2         2                                                         3=2+1
               5          4     2    2         2                                                   5=3+2
               6          6     4    2    2         2                                             8=5+3
               7         10    6    4    2    2        2                                       13 ...
               8         16   10   6    4    2            2                                   21
               9         26   16   10   6   4    2            2                             34
              10        42   26   16   10  6   4    2            2                       55
              11        68   42    26  16 10  6    4    2            2                 89            
              12       178  68   42   26 16 10   6    4    2            2         144
               
               经过以上分析,刚出生的排在表格的最前面,
               并且出生的数量是:上一行去掉幼年的总和(因为只有上一行的青年才可以生)
               将每一行的数量加起来除以二就是兔子的对数,对数符合斐波那契数列:
               下一个数,等于前两个数相加,所以利用此规律进行循环相加,代码如下:

/**
*将一对刚出生的兔子关在围墙里,已知一对兔子每个月可以生一对小兔子,每对兔子从出生后两个月(进入青年可每月生一对)每月生一对小兔子。
*问一年后生了多少?
*/

/*             月份       幼年  青年 青年 青年 青年 青年 青年   ...                           对
               1月        2                                                                   1
			   2                2                                                             1=1+0
			   3          2          2                                                        2=1+1
			   4          2     2         2                                                   3=2+1
			   5          4     2    2         2                                              5=3+2
			   6          6     4    2    2         2                                         8=5+3
			   7          10    6    4    2    2        2                                    13 ...
			   8          16    10   6    4    2            2                                21
			   9          26    16   10   6    4    2            2                           34
			   10         42    26   16   10   6    4    2            2                      55
			   11         68    42   26   16   10   6    4    2            2                 89            
			   12         178   68   42   26   16   10   6    4    2            2           144
			   
			   经过以上分析,刚出生的排在表格的最前面,
			   并且出生的数量是上一行去掉最前面的总和(因为只有上一行的青年才可以生)
			   将每一行的数量加起来除以二就是对数,对数符合斐波那契数列
			   下一个数,等于前两个数相加,所以利用此规律进行循环相加

*/

public class My7_6_11{
	
	public static void main (String [] args ){
		
		int sum = 0;
		
		//定义第1个月的对数
		
		int mouth1 = 1;
		System.out.println("第1个月的对数为:1对");
		//定义第2个月的对数
		
		int mouth2 = 1;
		System.out.println("第2个月的对数为:2对");
		//第3个月的对数等于前两个月相加
		for( int i = 3 ; i <=12 ; i++ ){
			
		    sum = mouth1 + mouth2;
			System.out.println("第"+i+"个月的对数为:"+sum+"对");
			
			//将等式右边换成 Sum + number2 这样下一轮计算结果就是前两个数之和(1+2);
			mouth1 = mouth2;
			mouth2 = sum;
			
		}
		
		System.out.print("经过12个月,一共生了兔子"+sum+"对");
	}
}

总结:

兔子繁殖问题最主要的是弄清数学原理,耐心看完并执行代码,希望对阅读者有所帮助,不明白了评论区留言,第一时间为您解答,一起努力加油!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值