欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【Leetcode】求解2的平方根

程序员文章站 2024-02-27 19:48:09
...

【Leetcode】求解2的平方根

牛顿迭代法计算2的平方根

牛顿迭代法

【Leetcode】求解2的平方根

实现

 /**
  * 牛顿迭代法
  *
  * 若f(x) = x^2 - n,则 f(x) = 0的递推解是 X[k+1] = 1/2 * (X[k] + n/X[k])
  *
  * 当 n = 2时,f(x) = 0 的递推解是 X[k+1] = 1/2 * (X[k] + 2/X[k]),也即是2的平方根的递推解
  *
  * @return 解
  */
 public double calRoot2ByNewton(){
     double precise = 0.000001;
     double result = 2;
     while(true){
         System.out.println("result = " + result);
         result = 0.5 * (result + 2 / result);
         if(Math.abs(2 - result * result) < precise) return result;
     }
 }

执行结果如下

result = 2.0
result = 1.5
result = 1.4166666666666665
result = 1.4142156862745097
result = 1.4142135623746899

可见,牛顿迭代法求解n的平方根是一个非常高效的方法。


二分查找计算2的平方根