【Leetcode】求解2的平方根
牛顿迭代法计算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的平方根是一个非常高效的方法。