经典兔子问题
题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
#解题思路 我们可以观察到第一个月1对兔子,第二个月1对兔子,第三个月2对兔子,第三个月3对兔子,第四个月5对,第六个月8对,以此类推,我们可以得到一个规律,1,1,2,3,5,8,13…
经过推导我们发现从第三个月开始,当前月的总数等于前两个月的总数相加,即f(x)=f(x-1)+f(x+2);
方法一:我们先从基本Java编程开始
public static void main(String[] args) {
int f1=1;
int f2=1;
int f;
for (int i = 3; i <20; i++) {
f=f1+f2;
System.out.println("第"+i+"月总数为"+f);
int t;
t=f2;
f2=f;
f1=t;
}
}
方法二:我们用递归算法来求解
public static void main(String[] args) {
for (int i = 1; i < 20; i++) {
System.out.println("第"+i+"月的兔子总数为"+f(i));
}
}
public static int f(int x) {
if (x==1||x==2) {
return 1;
}else {
return f(x-1)+f(x-2);
}
}