题目:古典问题:有一对兔子,从出生后的第3个月起每个月都生出一对小兔子,小兔子长到第三个月后每个月又生一对兔子,问两年中每个月的兔子总数为多少?
分析问题
这类型问题属于斐波拉契数列
第1个月的兔子数量 | 1 |
---|---|
第2个月的兔子数量 | 1 |
第3个月的兔子数量 | 2 |
第4个月的兔子数量 | 3 |
第5个月的兔子数量 | 5 |
第6个月的兔子数量 | 8 |
– | – |
从分析中很容易看出每个月兔子的数量等于前两个月兔子数量的和;下面用代码实现一下这个小问题:
public class Demo_rabbit {
public static void main(String[] args) {
System.out.println("第1个月兔子的数量为: 1");
System.out.println("第2个月兔子的数量为: 1");//输出前两个月兔子的数量
int a=1,b=1;//这里定义a是第一个月兔子数量,b是第二个兔子数量
int tmp,M=24;
for(int i=3;i<=24;i++) {
tmp=b;//先把第二个月兔子的数量保存下来
b=a+b;//把钱两个月的兔子数量加起来就是这个月兔子的数量
a=tmp;//把第二个月兔子的数量赋值给a,将成为下一次计算的第一个月兔子数量;
System.out.println("第"+i+"个月兔子的数量为: "+b);
}
}
}