/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
*/
import java.math.*;
class Demo
{
private Demo(){}
private static Demo instance = new Demo();
private BigDecimal base = new BigDecimal(2);
public static synchronized Demo getInstance()
{
return instance;
}
public BigDecimal getAmount(int month)
{
return ( base.pow(month/3 + 1) );
}
}
class MainClass
{
public static void main(String[] args)
{
Demo d = Demo.getInstance();
for(int month = 1; month < 100; month++)
System.out.println("第"+month+"个月:"+d.getAmount(month)+"只兔子");
}
}
/*
month amount pow month/3
1 2 1 0
2 2 1 0
3 4 2 1
4 4 2 1
5 4 2 1
6 8 3 2
7 8 3 2
8 8 3 2
9 16 4 3
10 16 4 3
11 16 4 3
12 32 5 4
13 32 5 4
14 32 5 4
15 64 6 5
16 64 6 5
17 64 6 5
18 128 7 6
19 128 7 6
20 128 7 6
21 256 8 7
22 256 8 7
23 256 8 7
24 512 9 8
25 512 9 8
26 512 9 8
amount = 2pow(month/3 + 1)
*/
java50题----01兔子
最新推荐文章于 2023-10-21 10:41:22 发布
该博客通过Java代码解析了古典的兔子繁殖问题,详细介绍了如何计算在给定月份内兔子的总数。代码中定义了一个`Demo`类,利用`BigDecimal`进行精确计算,并通过`main`方法展示了从第1个月到第100个月的兔子数量。问题的关键在于理解每3个月兔子会增加一对,从而得出月份数与兔子数量的关系:amount = 2^(month/3 + 1)。
摘要由CSDN通过智能技术生成