古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问每个月的兔子总数为多少?
解题思路:
月份 | 一个月大 | 两个月大 | 三个月大 | 总数 |
1 | 1 | 0 | 0 | 1 |
2 | 0 | 1 | 0 | 1 |
3 | 1 | 0 | 1 | 2 |
4 | 1 | 1 | 1 | 3 |
5 | 2 | 1 | 2 | 5 |
6 | 3 | 2 | 3 | 8 |
7 | 5 | 3 | 5 | 13 |
8 | 8 | 5 | 8 | 21 |
9 | 13 | 8 | 13 | 34 |
10 | 21 | 13 | 21 | 55 |
11 | 34 | 21 | 34 | 89 |
从总数可得规律:第三个月开始的总数为前两个月的总数相加
则:f(month)=(month - 1)+(monrh - 2);//month >= 3
代码实例:
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.print("请输入月份:");
int month = reader.nextInt();
int f1 = 1;//第一个月的兔子
int f2 = 1;//第二个月的兔子
if (month > 0 && month < 3){
System.out.println("第"+month+"月的兔子为1只");
}
else if (month > 3) {
int count = 0;
for (int i = 3; i <= month; i++) {
count = f1 + f2;
f1 = f2;
f2 = count;
}
System.out.println("第"+month+"月的兔子总数为:"+count);
}else{
System.out.println("你输入的月份不对!");
}
}
}