kyrenesjtv.github.io

https://kyrenesjtv.github.io/


Project maintained by kyrenesjtv Hosted on GitHub Pages — Theme by mattgraham

给定一个数值,求解他的平方

public class Lesson3_2 {

 /**
    * @Description: 计算大于 1 的正整数之平方根
    * @param n- 待求的数, deltaThreshold- 误差的阈值, maxTry- 二分查找的最大次数
    * @return double- 平方根的解
    */
    public static double getSqureRoot(int n, double deltaThreshold, int maxTry) {

     if (n <= 1) {
      return -1.0;
     }

     double min = 1.0, max = (double)n;
     for (int i = 0; i < maxTry; i++) {
      double middle = (min + max) / 2;
      double square = middle * middle;
      double delta = Math.abs((square / n) - 1);
      if (delta <= deltaThreshold) {
       return middle;
      } else {
       if (square > n) {
        max = middle;
       } else {
        min = middle;
       }
      }
     }

     return -2.0;

    }
}