Меня попросили реализовать 2 функции двумя способами.Предполагается, что следующие два метода возвратят 2 похожих результата, но я для меня не могу понять, где я ошибаюсь
Используя формулу:
C(x) = 12 + 8·n - 3·n2 + n3
Рекурсивный:
C(0) = 12
C(1) = 18
C(n) = 2·C(n-1) - C(n-2) for n >= 2
Мой код:
public static long CaseCFormula(long x)
{
return (long) (12 + 8 * x - 3 * Math.pow(x, 2) + Math.pow(x, 3));
//12 + 8 * n - 3 * n^2 + n^3
}
public static long C(long n)
{
if(n == 0)
return 12;
else if(n == 1)
return 18;
else
return 2 * C(n - 1) - C(n - 2);
}
Я попытался с помощью для цикла, чтобы проверить результаты, когда значение 1 и 2, результаты те же, однако, когда они достигают 3+, они начинают различаться. Предполагается, что эти два метода всегда возвращают то же самое значение, когда один и тот же параметр передается. Однако я не могу понять, где я ошибаюсь. Буду признателен за любые советы.
Заранее благодарим за помощь.
ли две формулы вы даете, порождают одни и те же значения? –
Я использую for-loop для тестирования. Когда параметр для обоих значений равен 1 или 2, генерируются одинаковые значения. Любой параметр, превышающий 2, генерирует 2 разных значения. – afontalv
@ ThorbjørnRavnAndersen Нет, они не являются. Попробуйте вычислить 'C (2)' – alfasin