工作递归的巴比伦平方根,需要合并错误



我创建了一个工作的递归巴比伦平方根方法,但我想加入错误。我希望在测试号为 或 - 真方根错误时停止程序。在这种情况下,该程序将停在5.015 ....因为5.015在真正的平方根(5)的0.1之内。

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

您需要更改if语句才能检查该号码是否在targetnum-errortargetnum+error的范围内:

public static void babyRoot(double num , double err)
{
    testnum = 0.5 * (testnum + (targetnum / testnum));
    System.out.println("Test number equals: " + testnum);
    if ((testnum >= (Math.sqrt(targetnum) - err)) &&
        (testnum <= (Math.sqrt(targetnum) + err)))
        System.out.println("The correct square root is: " + testnum);
    else
        babyRoot(testnum);
}

最新更新