我已經創建了一個工作遞歸巴比倫平方根方法,但是我想引入一個錯誤。當測試編號爲+或 - 實際平方根的錯誤時,我希望程序停止。在這種情況下,程序將停止在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語句的簡單問題? – tnw
你有沒有理由不能在你的程序中放入這張支票?這似乎是一個相當簡單的條件。 –
你確定這就是你想要定義錯誤的方式嗎?在數值計算中,您並不總是有一個容易得到的「真實」答案的特權,所以通常錯誤值的使用方式不同(例如,兩次連續迭代中的結果之間的差異,或者您進行反向計算時的差異)。 – RealSkeptic