问题:有一对兔子,从出生后第3个月起每月都生一对兔子,小兔子长到第三个月后每月又生一对兔子,假如兔子都不死,每个月有多少对兔子,一年共有多少对兔子?
意大利的著名数学家斐波那契提出该问题,后人把各个月份兔子数量称为“斐波那契数列”。
1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月,10月,11月,12月…………
1对, 1对, 2对, 3对, 5对, 8对, 13对, 21对,34对,55对,89对,144对…………
代码实现
public static void main(String[] args) {
// TODO 自动生成的方法存根
int []arr=new int[12];
arr[0]=1;
arr[1]=1;
System.out.println("第"+1+"月有"+arr[0]+"对兔子");
System.out.println("第"+2+"月有"+arr[1]+"对兔子");
for(int i=2;i<arr.length;i++){
arr[i]=arr[i-1]+arr[i-2];
System.out.println("第"+(i+1)+"月有"+arr[i]+"对兔子");
}
int sum=0;
for (int i = 0; i < arr.length; i++) {
sum+=arr[i];
}
System.out.println("一年共有"+sum+"对兔子");
}
运行结果如下:
第1月有1对兔子
第2月有1对兔子
第3月有2对兔子
第4月有3对兔子
第5月有5对兔子
第6月有8对兔子
第7月有13对兔子
第8月有21对兔子
第9月有34对兔子
第10月有55对兔子
第11月有89对兔子
第12月有144对兔子
一年共有376对兔子
不死神兔(递归版)求某一月有多少对兔子?
public static void main(String[] args) {
// TODO Auto-generated method stub
int[]arr=new int[10];
arr[0]=1;
arr[1]=1;
for (int i=2;i<arr.length;i++) {
arr[i]=arr[i-1]+arr[i-2];
}
System.out.println(f(7));//调用递归方法,求第7月
}
public static int f(int n) {//递归方法
if(n==1||n==2) {
return 1;
}else {
return f(n-1)+f(n-2);
}
}