【Leetcode】求解2的平方根

【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的平方根是一个非常高效的方法。


二分查找计算2的平方根

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值