古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
(用for循环和定义函数)
//实际这是一个菲波拉契数列问题
1.用for循环
代码如下(伪代码):
System.out.println("请输入月份:");
int n=new Scnner(System.in).nextInt();
//第一二个月为2对
if(n==1||n==2){
System.out.println("对数:1");
}else{
int temp;
int n1=1;
int n2=1;
//前两数和为第三个数
for(int i=3;i<=n;i++){
temp=n2;
n2=n1+n2;
n1=temp;
System.out.println("第" + i + "个月的兔子对数: " + n2);
}
}
第二种方法
代码如下(伪代码):
public static int sum(int n){
if(n==1||n==2){
return 1;
}else{
return(sum(n-1)+sum(n-2))//Fn=F(n-1)+F(n-2)【菲波拉契数列公式】
}
}
public static void main(String[] args) {
System.out.println("请输入月数:");
int n=new Scanner(System.in).nextInt();
System.out.println("当前第"+n+"个月,兔子有"+sum(n)+"对");
}