古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总对数为多少?输入月份数
- 思考:通过罗列兔子的对数可以知道,每个月兔子的对数如下,1 1 2 3 5 8 13 …
- 下个月的兔子对数是上两个月兔子对数的和
- 因此,可以给三个变量代码当前兔子,前面两个月的兔子对数
- 代码实现
import java.util.Scanner;
public class Test3_11 {
public static void main(String[] args) {
//11:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一
//对兔子,假如兔子都不死,问每个月的兔子总数为多少?
//输入月份数
Scanner sc = new Scanner(System.in);
//开始的兔子对数
int habbit = 1;
int previous_1 = 1;
int previous_2 = 1;
System.out.println("请输入月份数");
int month = sc.nextInt();
int[] num = new int[month];
//输出每个月的兔子数
for(int i = 1;i <= month;i++){
if(i == 1 || i == 2){
num[i-1] = habbit;
}else{
//本月的兔子数量
habbit = previous_1 + previous_2;
//上一个月兔子数量
previous_1 = habbit - previous_1;
//存放当前月兔子数量
previous_2 =habbit;
num[i-1] = habbit;
}
}
for (int i = 0; i < num.length; i++) {
System.out.println("第"+(i+1)+"月的兔子数量为"+num[i]);
}
}
}
- 结果: