Java中的巴比伦算法 [英] Babylonian Algorithm in Java
本文介绍了Java中的巴比伦算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想制作一个使用巴比伦算法来计算正数 n 的平方根的程序,如下所示:
I want to make a program that uses the Babylonian algorithm to compute the square root of a positive number n as follows :
- 猜测答案(您可以选择n / 2作为初始猜测)。
- 计算r = n /猜测。
- 设置猜测=(猜测+ r)/ 2
- 返回步骤2,直到最后两个猜测值彼此相差1%以内。
- Make a guess at the answer (you can pick n/2 as your initial guess).
- Compute r = n / guess.
- Set guess = (guess + r) / 2
- Go back to step 2 until the last two guess values are within 1% of each other.
现在这是我的代码。
double n = input.nextDouble();
double guess = n / 2;
while ()
{
double r = n / guess;
guess = (guess + r) / 2;
System.out.println(guess);
}
当猜测到时,如何使循环停止迭代在先前猜测的1%之内?我没有得到猜测在先前猜测的1%之内这一部分。
How can I get the loop to stop iterating when guess is within 1% of the previous guess ? I don't get the part "guess is within 1% of the previous guess".
推荐答案
这应该可以解决问题:
This should do the trick:
double n = input.nextDouble();
double guess = n / 2;
double pctDiff = Double.MAX_VALUE;
double lastGuess = guess;
while (Math.abs(pctDiff) >= 0.01)
{
double r = n / guess;
guess = (guess + r) / 2;
pctDiff = ((guess-lastGuess)/lastGuess); // normally, multiply by 100, but don't need to necessarily...
lastGuess = guess;
System.out.println(guess);
}
这篇关于Java中的巴比伦算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文