兔子问题
有一对兔子,从出生三个月后每个月都生一对兔子,小兔子长到第三个月也会生一对兔子,如果兔子都不死,问每个月的兔子的数量为多少?
我们来分析一下这个问题:第一个月兔子为1对,第二个月兔子为1对,直到第三个月兔子数量变为2对,第四个月为3对,第五个月为5对,第六个月为8对;
我们可以得出结论:兔子的个数为:1、1、2、3、5、8、13、21…
通过分析我们可以得出从从第二个月开始每个月的兔子的对数等于前两个月的和:我们设置的当前月份F(n)=F(n-1)+F(n-2):
这里我限定了月份数为31个月
代码如下:
public class Rabbits {
public static void main(String[] args) {
for (int i=0;i<=30;i++){
System.out.println("第"+(i+1)+"月的兔子为"+fibonacci(i));
}
}
public static int fibonacci(int n){
if (n<=1) return 1;
return fibonacci(n-1)+fibonacci(n-2);
}
}
运行结果如下图
第1月的兔子为1
第2月的兔子为1
第3月的兔子为2
第4月的兔子为3
第5月的兔子为5
第6月的兔子为8
第7月的兔子为13
第8月的兔子为21
第9月的兔子为34
第10月的兔子为55
第11月的兔子为89
第12月的兔子为144
第13月的兔子为233
第14月的兔子为377
第15月的兔子为610
第16月的兔子为987
第17月的兔子为1597
第18月的兔子为2584
第19月的兔子为4181
第20月的兔子为6765
第21月的兔子为10946
第22月的兔子为17711
第23月的兔子为28657
第24月的兔子为46368
第25月的兔子为75025
第26月的兔子为121393
第27月的兔子为196418
第28月的兔子为317811
第29月的兔子为514229
第30月的兔子为832040
第31月的兔子为1346269