- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试开发代码来对经典 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, 2, 2, 3, 4, 5, 7, 9, 时,我得到全 1。 ..) 和 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;
}
}
最佳答案
首先,您描述的 x=5
输出是错误的(应该是 1, 1, 2, 3, 5, 7, 11, 17, 26, 40,...),并且您的代码不会为任何 x > 2
生成正确的结果。
x
是生命的总年数(包括婴儿期),因此对于 x = 1
您应该得到 (1, 0, 0, ... ),对于 x = 2
,您应该得到全 1,并且,对于 x=3
,您得到 1, 1, 2, 2, 3 、4、5、7、9...等等。
我修复了您的函数,现在它可以为任何输入生成正确的输出,您缺少 n = x + 1
的特殊情况,这是由于系列的初始化和减法而创建的在最后一种情况下应该用 n - x -1
public static int DeadRabbits(int n, int x) {
int Fn;
if (n < 1) {
Fn = 0;
}
else if (n == 1) {
Fn = 1;
}
else if (n < x + 1) {
Fn = DeadRabbits(n - 1, x) + DeadRabbits(n - 2, x);
}
else if (n == x + 1) {
Fn = DeadRabbits(n - 1, x) + DeadRabbits(n - 2, x) - 1;
}
else {
Fn = DeadRabbits(n - 1, x) + DeadRabbits(n - 2, x)
- DeadRabbits(n - x - 1, x);
}
return Fn;
}
希望这有帮助。
关于java - 过期的斐波那契兔子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19127674/
我是一名优秀的程序员,十分优秀!