初学java的一个练手。这里没有用到前两项和等于第三项的性质。
问题://有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子假如兔子都不死,问每个月的兔子对数为多少?
代码:
import java.util.Scanner;
public class bunnies {
public static void main(String[] args) {
//有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子.
//假如兔子都不死,问每个月的兔子对数为多少?
Scanner in = new Scanner(System.in);
System.out.printf("输入月份数");
int targettime = in.nextInt();//输入月份数
int t = 0;
int newone = 1;//一月兔
int newtwo = 0;//两月兔
int oldbunny = 0;//初始化时间(月),小兔子及大兔子对数
int oldmark;
int newtwomark;//用于记录oldbunny即newtwo改变前的值
while(t <= targettime)
{
if (oldbunny > 0)//第3个月后
{
newtwomark = newtwo;
oldmark = oldbunny;
oldbunny += newtwo;
newtwo += newone;
newtwo -= newtwomark;
newone = oldmark + newtwomark;
}
else if(t == 3)
{
newone = 1;
newtwo = 0;
oldbunny = 1;
}
t++;
}
System.out.printf("第%d个月兔子数为%d对",targettime,newone+newtwo+oldbunny);
}
}
输出结果:
输入月份数12
第12个月兔子数为144对
Process finished with exit code 0