题目: 一对兔子从出生开始,每对兔子每个月生一对小兔子,新生的兔子出生后第三个月又开始生小兔子,如果兔子不死,兔子总数多少


题目:
一对兔子从出生开始,每对兔子每个月生一对小兔子,新生的兔子出生后第三个月又开始生小兔子,如果兔子不死,兔子总数多少

第一个月:1对兔子(初始的一对)
第二个月:1对兔子(仍然是初始的一对)
第三个月:2对兔子(初始的一对生了一对)
第四个月:3对兔子(初始的一对生了一对,之前的一对生了一对)
第五个月:5对兔子(初始的一对生了一对,之前的两对分别生了一对)
第六个月:8对兔子(初始的一对生了一对,之前的三对分别生了一对)
我的思路:
因为兔子生下来其实就是新生兔子,所以第1个月和第2个月他们都是一对兔子
由于新生兔子第三个月又开始生小兔子,所以第三个月兔子对数应该为:一个新生兔子加一个老兔子 ,那么此时
兔子对数便是2对
第四个月的话,老兔子每个月会生一对新兔子,那么此时应该是,之前第三月的兔子对数 2 加上 1(原因是因为老兔子每个月生一对兔子,而新兔子必须等三个月),所以总数3
第五个月:加上第四个月兔子对数3加上2,为啥是2,第三月份新兔子在三月新兔子到五月份变成老兔子,老兔子第三个月生小兔子,加值1月份新兔子在第三月份变成老兔子,这些老兔子每个月都会生一对兔子
第六个月:加上五月份兔子对数,加上3,那么3如何来的,因为第四月份的一只新兔子在到六月的时候,已经变成老兔子,生了一只兔子 第三月老兔子生了一只,第五月老兔子生了一只
那么f1 =f2 第1月兔子对数等于第二月 初始值
第三月 f3 =f2+f1
第四月 f4 =f3+f2
第五月 f5 =f4+f3
第六月 f6 =f5+f4
公式 fn =f(n-1)+f(n-2)
java代码
class a {
public staic void main (String[]args){
int total =0;
for(int month =1; i<=6;i++){
result =month(month)
total+=result
System.out.println(month+"月兔子对数为:"+result+total)
}
}
public static int month(int n){
if(n<=2){ //这个1月2月都是1
return 1
}else{
return month(n-1)+month(n-2) //传入n=3 调用month方法返回1加起来等于2
}

}
}

 

posted @ 2023-12-05 22:04  GOZO  阅读(84)  评论(0)    收藏  举报