文章目录
1. 题目2. 思路3. 代码4. 运行结果1. 题目
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
2. 思路
可以看出:
第一个月:1第二个月:1第三个月:2第四个月:3第五个月:5第六个月:8
所以这是一个斐波那契数列问题
所以如果想实现这个序列的话,我们把他画出来看一下
我们最初得到的是前两个月的情况,作为初始化我们现在的任务是将j
指针用来求和来产生新的数字,而将i
指针不断向右移,以此来达到求和的因子不断更新的作用,所以我们就按照这个思路来:
① 用j
来求和
② 然后把i
移到右边来获取到未求和之前j
的数值因此,我们想在过程中保持j
的状态,就需要一个中间的替换量temp
3. 代码
public class rabit {public static void main(String[] args) {int i = 1;int j = 1;System.out.println("第1个月的兔子数量为:1对");System.out.println("第2个月的兔子数量为:1对");for (int k = 3; k < 24; k++) {int temp = j;j = temp + i;i = temp;System.out.println("第" + k + "个月的兔子数量为:" + j + "对");}}}