Метод Ньютона. Из итерации в рекурсию (Java)
Задание состоит в том, чтобы написать код, который будет применять метод Ньютона, используя рекурсию, и дан этот кусок кода, как пример использования метода Ньютона с итерацией. Не могу понять, как перевести данный код в рекурсию. Язык начала изучать недавно, поэтому была бы очень благодарна, если бы ответ был наглядным. Спасибо!
public static double f(double x) {
return x * x * x - 3.5 * x * x + 0.5 * x + 5;
}
public static double prf(double x) {
return 3 * x * x - 7 * x + 0.5;
}
// ВЫЧИСЛЕНИЕ КОРНЯ МЕТОДОМ НЬЮТОНА
public static double x_newton(double a, double e) {
double x = a;
double razn;
do {
double xn = x - f(x) / prf(x);
razn = Math.abs(xn - x);
x = xn;
} while (razn > e);
return x - f(x) / prf(x);
}
Ответы (1 шт):
Автор решения: Alex Rudenko
→ Ссылка
Известная рекуррентная формула метода Ньютона:
Условие выхода из рекурсии в коде также указано:
и оно может быть упрощено:
Соответственно рекурсивный код может выглядеть так:
// обычная формула
public static double x_newton(double x, double e) {
double xn = x - f(x) / prf(x);
if (Math.abs(xn - x) < e) {
return xn;
}
return x_newton(xn, e);
}
// упрощённая формула
public static double x_newton_simple(double x, double e) {
double v = f(x) / prf(x);
if (Math.abs(v) < e) {
return x - v;
}
return x_newton_simple(x - v, e);
}


