一对兔子,从出生后第3个月起每个月都生一对兔子。
小兔子长到第3个月开始每个月又生一对兔子。
假如兔子都不死,
请问第1个月出生的一对兔子,第n个月有多少只兔子?
求兔子数量总和
第n个月兔子数量 = 第(n-1)个月时的兔子数量 + 第n个月新生兔子数量
第n个月兔子新生数量 = (有生育能力的兔子的数量)也就是两个月前兔子的数量
所以有 第n个月兔子数量 = 第(n-1)个月时兔子的数量 + 第(n-2)个月时兔子的数量
假设f(n)为第n个月兔子的数量,则有 f(n) = f(n-1)+f(n-2)
直接上代码
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;
public class RabbitTest {
//面向对象实现,如果n值太大时,可能会导致内存占用过多
@Test
public void count1(){
int monthCount = 30;
List rabbits = new ArrayList<>();
Rabbit rabbitAdamAndEve = new Rabbit();
rabbits.add(rabbitAdamAndEve);
for (int i = 1; i rabbits){
if(this.months >=3){
rabbits.add(new Rabbit());
}
}
public void grow(){
this.months++;
}
}
//面向过程实现
@Test
public void count2(){
System.out.println(fun(30)*2);
}
int fun(int m){
if(m==1){
return 1;
}
if(m==2){
return 1;
}
else
return fun(m-1)+fun(m-2);
}
}



