计算需求
题目:古典问题:有一对兔子,从出生后第3 个月起(满三个月即开始生)每个月都生一对兔子,小兔子长到第三个月时又开始每个月生一对小兔子,假如兔子都不死,问n个月之后共有多少对兔子?
具体代码如下
public static int f(int month) {
if (month < 3) {
return 1;
}
// 初始值 为 第三个月 时的 数据
int m0 = 1, m1 = 0, m2 = 0, m3 = 1, sum = 0;
for (int i = 4; i <= month; i++) {
// 具体迭代规则
m3 += m2;
m2 = m1;
m1 = m0;
m0 = m3;
}
sum = m3 + m2 + m1 + m0;
System.out.println("刚出生:" + m0);
System.out.println("1个月了:" + m1);
System.out.println("2个月了:" + m2);
System.out.println("已经生育了:" + m3);
return sum;
}
还有一种算法–递归
这个月的兔子,等于上个月的兔子数加上这个月新生的兔子数;
而这个月新生兔子数,刚好又是前两个月已经存在兔子所生,所以等于前两个月的兔子数;
可以得到,f(x)=f(x-1)+f(x-2),x>2
网友评论