21xrx.com
2024-09-17 04:17:27 Tuesday
登录
文章检索 我的文章 写文章
Java中的平方根——从基础算法到Math库函数
2023-06-16 06:07:08 深夜i     --     --
Java 平方根 算法 Math库函数

Java语言中求平方根是一个非常基础的问题,也是大多数Java初学者必须掌握的知识点之一。学习Java中的平方根计算可以帮助我们更好地理解算法和Math库函数的使用。

首先,我们可以通过自己编写代码实现平方根的计算。这里介绍两种常见的算法方法:牛顿迭代法和二分查找法。

1.牛顿迭代法

牛顿迭代法是一种通过多次迭代逼近函数零点的方法。求一个数的平方根也是通过迭代逼近实现的。其实现代码如下:


public static double sqrt(double x) {

  if (x < 0)

    throw new IllegalArgumentException("Cannot compute square root of negative number " + x);

  double err = 1e-15;

  double t = x;

  while (Math.abs(t - x / t) > err * t) {

    t = (x / t + t) / 2.0;

  }

  return t;

}

在这段代码中,我们通过判断`Math.abs(t - x / t)`的值是否小于`err * t`来判断迭代是否结束。其中,`Math.abs()`是取绝对值的方法,`t`表示当前迭代结果,`x/t`表示`x`的倒数,将二者相加再除以2即为下一次迭代结果。

2.二分查找法

二分查找法的基本思路是,首先找到中间值,然后判断目标值位于中间值左边还是右边,进而缩小查找范围。我们可以利用这种思路来实现平方根计算。实现代码如下:


public static double sqrt(double x) {

  if (x < 0)

    throw new IllegalArgumentException("Cannot compute square root of negative number " + x);

  double low = 0;

  double high = x;

  while (low <= high) {

    double mid = low + (high - low) / 2;

    if (mid * mid == x)

      return mid;

     else if (mid * mid < x) {

      low = mid + 1e-15;

    } else

      high = mid - 1e-15;

    

  }

  return high;

}

在这段代码中,我们通过判断`mid * mid`与`x`的大小关系来缩小查找范围,最终返回最终的结果。

除了以上方法,Java还内置了`Math`库函数,可以直接调用`Math.sqrt()`方法求平方根。例如,计算4的平方根可以这样写:


double result = Math.sqrt(4);

通过学习Java中平方根算法的基础知识,我们可以更好地掌握算法原理和库函数的使用,在实际开发中更加得心应手。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复