Я пытаюсь разработать код для настройки на классических кроликах Fib. В этом случае они истекают х поколений после их рождения. Пример находится в ссылке ниже:Кролики фибоначчи, срок действия которых истекает
http://matheminutes.blogspot.com/2012/02/killing-fibonaccis-rabbits.html
Я понимаю таблицы на полпути вниз по ссылке, показывающий случай х = 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 (я получаю все 1s, когда мне нужно получить серии 1, 1, 2, 2, 3, 4, 5, 7, 9, ...) и x = 1 (я получаю 1, 0, 1, 0, 1, 0, когда я должен получить все 1 в соответствии со ссылкой выше).
Мой код выглядит следующим образом (в настоящее время полагая х = 5 для первых 22 чисел в последовательности):
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;
}
}
Я видел ваше сообщение на math.stackexchange. Должен ли я предположить, что сообщение там спрашивало из более теоретического угла, и это больше осуществления? –
Да, конечно. Я надеялся, что лучшее понимание теоретического угла поможет мне разобраться в проблемах с моим кодом! :) – LanneR