//有一对小兔子,从第三个月起开始每一个月生下一对小兔
//小兔从第三个月起每个月也会生下一对小兔,假设兔子都
//不会死亡,那么求每个月的兔子的个数
//如果一个月一个月的把兔子的个数写出来的话,会发现如下规律
//1 1
//2 1
//3 2
//4 3
//5 5
//由上面可以发现,从第三个月起,每个月的兔子对数是前两个月兔子对数的和
//所以可以使用两个变量m1,m2代表前两个月兔子的对数,然后求出当前月兔子的对数
//但是需要注意的是要求的月数是不确定的,所以需要使用循环来实现,因为有这样的
//规律那么就需要有tmp来暂时的存储当前的第二个月的兔子个数,因为下一次循环中它
//将会是作为前两个月的第一个月来使用的,而直接把m2当做要求的那个月的值则不用再
//记录当前的那个月的值了
int m1=1,m2=1,tmp,month=24,current=0;
for(int i=0;i<month;i++) {
//记录下来m2赋值给m1,为下一次的循环做铺垫
tmp = m2;
//记录下来当前月的个数
current = m1+m2;
m1 = tmp;
//把当前月的数值赋值给m2
m2 = current;
System.out.println("第"+i+"月:"+current);
}
//如果这道题变成了从第二个月开始就生下一对新的话,那么就变成2的(n-1)次方了。
//总之这种题就是先从最开始的几个里面找规律,然后通过程序把规律给展现出来就是了。
当然如果熟练了就直接把
current = m1+m2;
m2 = current;
直接的写成:m2 = m1 + m2;