题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,第三个月小兔子长到后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
分析:(R1表示一代兔子,R2表示二代兔子,······,Rn表示n代兔子)
第1个月 1对 R1
第2个月 1对 R1
第3个月 2对 R1+R2
第4个月 3对 R1+R2+R2
第5个月 5对 R1+R2+R2 + R2+R3
第6个月 8对 R1+R2+R2 + R2+R3 + R2+R3+R3
······
观察可得结论:第n个月兔子的数量 = 第n-1个月兔子的数量 + 第n-2个月兔子的数量 即F(n)=F(n-1)+F(n-2) (斐波那契数列)
import java.util.Scanner;
public class Rabbits {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第几个月:");
int n = scanner.nextInt();
int f1 = 1;
int f2 = 1;
int fn;
if(n > 2){
for(int i = 3; i <= n; i++) {
fn = f2;
f2 = f1 + f2;
f1 = fn;
}
System.out.println(f2 + "对");
}else{
System.out.println(1+ "对");
}
}
}