작동하는 재귀적인 바빌론의 제곱근 방법을 만들었지 만 오류를 통합하려고합니다. 테스트 번호가 + 또는 - 실제 제곱근에 대한 오류 일 때 프로그램을 중지하고 싶습니다. 이 경우 5.015는 실제 제곱근 (0.1)의 0.1 이내이므로 프로그램은 5.015 ...에서 중단됩니다.작업 재귀 babylonian 제곱근, 오류를 통합해야합니다.
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);
}
}
출력 :
당신은 문 수가targetnum-error
와
targetnum+error
의 범위 내에 있는지 확인하는 경우를 변경해야
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
확인 감사를 알려셔서. 질문이 뭐야? 이것은 두 숫자를 빼고, 절대 값 (필요한 경우)을 취하여 if 문으로 가져 오는 간단한 문제일까요? – tnw
그 수표를 프로그램에 넣을 수없는 이유가 있습니까? 그것은 아주 단순한 조건처럼 보입니다. –
오류를 정의하는 방법이 확실합니까? 수치 계산에서 항상 쉽게 사용할 수있는 "진정한"답변을 얻을 수있는 권한이 항상있는 것은 아니므로 일반적으로 오류 값은 다르게 사용됩니다 (예 : 두 번의 연속 된 반복 결과의 차이 또는 역 계산을 할 때의 차이). – RealSkeptic