**
兔子对数问题
**
题目描述:有一对兔子从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,加入兔子都不死,问每个月的兔子对数为多少?
由题意得,第一个月的兔子对数为一对,第二个月兔子对数也为一对,到第三个月兔子对数为2对,第四个月为3对,第五个月为5对……符合斐波拉契数列。
import java.util.Scanner;
public class RabbitCt{
public static void main(String[] args){
long number1=1;
long number2=1;
Scanner sc=new Scanner(System.in);
System.out.println("输入月份");
int month=sc.nextInt();
for(int i=3;i<=month;i++){
long t=number2;
number2=number1+number2;
number1=t;
}
System.out.println("第"+month+"个月的兔子对数:"+number2);
}
}
我们也可以运用数组来计算:
public class RabbitCt2{
public static void main(String[] args){
int i;
long a[]=new long[36];
a[0]=1;
a[1]=1;
System.out.println("第1个月的兔子对数:1");
System.out.println("第2个月的兔子对数:1");
for(i=2;i<36;i++)
{
a[i]=a[i-1]+a[i-2];
System.out.println("第"+i+"个月的兔子对数:"+a[i]);}
}
}
我们还可以使用递归的方法来解决问题:
import java.util.Scanner;
public class RabbitCt3{
public static void main(String[] args){
System.out.println("请输入月份:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println("第"+n+"个月有"+fibo(n)+"对兔子");
}
private static int fibo(int n){
if(n==1||n==2)
return 1;
else
return fibo(n-1)+fibo(n-2);
}
}