Java中的巴比伦算法 [英] Babylonian Algorithm in Java

查看:187
本文介绍了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 :


  1. 猜测答案(您可以选择n / 2作为初始猜测)。

  2. 计算r = n /猜测。

  3. 设置猜测=(猜测+ r)/ 2

  4. 返回步骤2,直到最后两个猜测值彼此相差1%以内。

  1. Make a guess at the answer (you can pick n/2 as your initial guess).
  2. Compute r = n / guess.
  3. Set guess = (guess + r) / 2
  4. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆