题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
解:
import java.util.Scanner;
public class RabbitBornRabbit {
public static void main(String[] args) {
System.out.println("请输入想要计算的月份:");
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
if (month == 1 || month == 2) {
System.out.println("兔子的对数为" + 1);
} else {// 假设i = 3
int number = 1;// 二月的兔子数
int bornNumber = 1;// 三月出生的兔子数即一月出生的兔子数
for (int i = 3; i <= month; i++) {
number = number + bornNumber;
// 三月的兔子数 = 二月的兔子数 + 三月出生的兔子数
bornNumber = number - bornNumber;
// 四月出生的兔子数 = 三月的兔子数 - 三月出生的兔子数
// 第一个bornNumber是四月出生兔子数 即二月出生的兔子数
// 第二个bornNumber是三月出生的兔子数 即一月出生的兔子数
}
System.out.println("兔子的对数为" + number);
}
}
}
参考答案解:
public class Prog1{
public static void main(String[] args){
int n = 10;
System.out.println("第"+n+"个月兔子总数为"+fun(n));
}
private static int fun(int n){
if(n==1 || n==2)
return 1;
else
return fun(n-1)+fun(n-2);
}
}
|
|