工作递归巴比伦平方根,需要合并错误。
Working recursive babylonian square root, need to incorporate an error.
我已经创建了一个有效的递归巴比伦平方根方法,但我想加入一个错误。我希望程序在测试编号为 + 或 - 实数平方根误差时停止。在这种情况下,程序将在 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-error
和 targetnum+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);
}
我已经创建了一个有效的递归巴比伦平方根方法,但我想加入一个错误。我希望程序在测试编号为 + 或 - 实数平方根误差时停止。在这种情况下,程序将在 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-error
和 targetnum+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);
}