Я создал рабочий рекурсивный метод вавилонского квадратного корня, но я хотел бы включить ошибку. Я хочу, чтобы программа остановилась, когда номер теста + или - ошибка для реального квадратного корня. В этом случае программа остановится на 5.015 .... так как 5.015 находится в пределах 0,1 от реального квадратного корня (5).Работая рекурсивный вавилонский квадратный корень, необходимо включить ошибку.
public class BabyRoot {
private static double testnum = 0;
private static double targetnum = 0;
private static double error = 0;
public static void babyRoot(double num) {
testnum = 0.5 * (testnum + (targetnum/testnum));
System.out.println("Test number equals: " + testnum);
if ((testnum * testnum) == targetnum)
System.out.println("The correct square root is: " + testnum);
else
babyRoot(testnum);
}
public static void main(String[] args) {
error = 0.1;
testnum = 25;
targetnum = testnum;
babyRoot(testnum);
}
}
Выход:
Test number equals: 13.0
Test number equals: 7.461538461538462
Test number equals: 5.406026962727994
Test number equals: 5.015247601944898
Test number equals: 5.000023178253949
Test number equals: 5.000000000053722
Test number equals: 5.0
The correct square root is: 5.0
Ok спасибо за давая нам знать. Каков твой вопрос? Разве это не просто вопрос вычитания двух чисел, принятия абсолютного значения (если необходимо) и ввода его в оператор if? – tnw
Есть ли причина, по которой вы не можете просто поставить эту проверку в свою программу? это похоже на довольно простое условие. –
Вы уверены, что именно так вы хотите определить ошибку? В числовых вычислениях вы не всегда обладаете привилегией легкодоступного «истинного» ответа, поэтому обычно значение ошибки используется по-разному (например, разница между результатом в двух последовательных итерациях или разность при обратном вычислении). – RealSkeptic