题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
输出24个月的兔子总数
输入格式:
无输入。
输出格式:
第i个月兔子有多少对,总数是多少
输入样例:
输出样例:
在这里给出相应的输出。例如:
第1个月有兔子1对, 总数是2
第2个月有兔子1对, 总数是2
第3个月有兔子2对, 总数是4
第4个月有兔子3对, 总数是6
第5个月有兔子5对, 总数是10
第6个月有兔子8对, 总数是16
第7个月有兔子13对, 总数是26
第8个月有兔子21对, 总数是42
第9个月有兔子34对, 总数是68
第10个月有兔子55对, 总数是110
第11个月有兔子89对, 总数是178
第12个月有兔子144对, 总数是288
第13个月有兔子233对, 总数是466
第14个月有兔子377对, 总数是754
第15个月有兔子610对, 总数是1220
第16个月有兔子987对, 总数是1974
第17个月有兔子1597对, 总数是3194
第18个月有兔子2584对, 总数是5168
第19个月有兔子4181对, 总数是8362
第20个月有兔子6765对, 总数是13530
第21个月有兔子10946对, 总数是21892
第22个月有兔子17711对, 总数是35422
第23个月有兔子28657对, 总数是57314
第24个月有兔子46368对, 总数是92736
思路参考斐波拉契数列。这里使用递归的方法,推荐使用循环,当需要计算的月数越多时递归越慢
public class Main{
//经典递归
public static int haveRabbit(int m){
if(m == 1){
return 2;
}
else if(m == 2){
return 2;
}else{
return haveRabbit(m-1)+haveRabbit(m-2);
}
}
public static void main(String args[]){
for(int i = 1;i <= 24;i++){
System.out.println("第"+i+"个月有兔子"+haveRabbit(i)/2+"对, 总数是"+haveRabbit(i));
}
}
}