Java50道经典习题-程序1 不死神兔
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
分析:假如:1月1日有1对兔子,根据题目“从出生后第3个月起每个月都生一对兔子”即3月1日这对兔子产子一对由此可推出一对兔子从出生到产子的时间为每两个月一次,从第二对兔子开始,后续兔子的产子时间相同由此可得出以下的兔子数规律 兔子的规律为1,1,2,3,5,8,13,21....
从第3月开始,每月兔子的总数等于上两月兔子总数之和
总数量 1 1 2 3 5 8 13 21
月份 1月 2月 3月 4月 5月 6月 7月 8月
A A1 A2 A3 A4 A5 A6
兔 A1-1 A1-2 A1-3 A1-4
子 A2-1 A2-2 A2-3
族 A3-1 A3-2
谱 A1-1-1 A4-1
A1-1-2
A1-2-1
A1-2-1
A2-1-1
1 public class Prog1 { 2 public static void main(String[] args) { 3 int Month=8; 4 System.out.println("第"+Month+"月,兔子的总对数有:"+Sum(Month)+"对"); 5 } 6 private static int Sum(int Month) { 7 if(Month==1||Month==2) {//第1月和第2月单独计算 8 return 1; 9 }else { 10 return Sum(Month-1)+Sum(Month-2);//从第3月开始,每月兔子的总数等于上两月兔子总数之和 11 } 12 } 13 } 14 /*程序编译运行的结果如下: 15 第8月,兔子的总对数有:21对 16 */