#java #fibonacci
#java #фибоначчи
Вопрос:
Здесь у меня есть свой код, который является вариацией рекурсивного метода Фибоначчи. Я пытаюсь получить правильное значение n для отображения, но оно просто не работает… Я всегда отклоняюсь на одно место в тройном Фибоначчи (что означает, что тройные числа Фибоначчи основаны на числах Фибоначчи, но начинаются с трех предопределенных значений, каждое значение впоследствии является суммой предыдущих трех значений вместо 2 в Фибоначчи)
public long BinaryOddonacci(int n){
if (n<=2){ // If the n is 0,1 or 2 the answer is 1
return 1;
}
else {return BinaryOddonacci(n-1) BinaryOddonacci(n-2) BinaryOddonacci(n-3);} // recursive call
}
Результат, который я должен получить для BinaryOddonacci (10), равен 105, но я продолжаю получать 193, что и должно быть получено для BinaryOddonacci (11)…
Комментарии:
1. «это просто не работает… Я всегда ошибаюсь на одно место в тройном Фибоначчи » Пожалуйста, приведите конкретный пример. Каков фактический результат и чем он отличается от того, что вы ожидаете?
2. Добавлен @Code-Apprentice!
3. Давайте вернемся к чему-то немного более простому. Что должно
BinaryOddonacci(3)
быть? Что вы на самом деле получаете?4. Почему результат равен 1 для ввода 0? Для обычного Фибоначчи этот результат равен 0 для ввода 0.
Ответ №1:
По определению, вы устанавливаете 0-е, 1-е и 2-е значения равными 1 (согласно этому комментарию // If the n is 0,1 or 2 the answer is 1
). Итак, последовательность выглядит следующим образом:
0 : 1
1 : 1
2 : 1
3 : 3
4 : 5
5 : 9
6 : 17
7 : 31
8 : 57
9 : 105
10 : 193
Другими словами, BinaryOddonacci(10)
должен возвращать 193, что и возвращает. Здесь нет ошибки.