题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
解题思路:数列问题,需要先找出该问题数列规律,随着月数的增长,可以得出兔子的对数呈以下规律递增:1,1,2,3,5,8,13,21…可以发现,从第三个月开始,值就等于前面两个值之和,由此可以想到斐波那契数列。重要算法结构为:a[i+2] = a[i+1]+a[i]
注意:需注意循环的临界值,否则会出现数组越界。
具体代码:
public class learnproject3 {
public int doCount(int month) {
int[] count = new int[100];
//兔子成长期,第一个月仅有一对
count[0] = 1;
//兔子成长期,第二个月仅有一对
count[1] = 1;
//开始计算兔子对数,斐波那契数列
for (int i = 0; i < count.length-2; i++) {
count[i+2] = count[i]+count[i+1];
}
return count[month-1];
}
public static void main(String[] args) {
learnproject3 learnproject3 = new learnproject3();
System.out.println("请输入要查询的月份:");
Scanner scanner = new Scanner(System.in);
int month = scanner.nextInt();
if (month >100) {
do {
System.out.println("暂仅支持查看100月内,请重新输入:");
month = scanner.nextInt();
} while (month>100);
if (month <=100) {
System.out.println(learnproject3.doCount(month));
}
}else {
System.out.println(learnproject3.doCount(month));
}
}
}