我正在尝试开发代码以调整经典的 Fib 兔子。在这种情况下,它们会在出生后 x 代过期。下面的链接中有一个示例:
http://matheminutes.blogspot.com/2012/02/killing-fibonaccis-rabbits.html
我理解显示 x=2 情况的链接中途的表格(兔子在 2 年后到期)(表格有 5 列,其中第 1 列 =“年份”,第 2 列 =“新生兔子对”,列3 =“成对的新成熟兔子”,第 4 列 =“成对的真正成熟的兔子”,第 5 列 =“总计”)。
根据这张表,每年的兔子总数遵循1、1、2、2、3、4、5、7、9、...的顺序。
我开发的代码似乎适用于 x>2 值(例如,当我设置 x=5 时,我得到系列:1、1、2、3、5、7、11、16、24、35 等。 ,我认为这是正确的)。
但是,我的代码似乎不适用于两种情况:x=2(我得到所有 1,当我应该得到系列 1、1、2、2、3、4、5、7、9,...)和 x=1 (我得到 1, 0, 1, 0, 1, 0,当我应该根据上面的链接得到所有 1 时)。
我的代码如下(目前为前 22 个数字设置 x=5):
public class TestFib {
public static void main(String args[]) {
int x = 5;
for (int i = 1; i < 22; i++) {
System.out.println("n = " + i + ", " + DeadRabbits(i, x));
}
}
public static int DeadRabbits(int n, int x) {
int Fn;
if (n == 0) {
Fn = 0;
}
else if (n == 1) {
Fn = 1;
}
else if (n < x ) {
Fn = DeadRabbits(n - 1, x) + DeadRabbits(n - 2, x);
}
else {
Fn = DeadRabbits(n - 1, x) + DeadRabbits(n - 2, x)
- DeadRabbits(n - x, x);
}
return Fn;
}
}