牛顿迭代法求平方根,Go的tour一上来就搞一个这么高级的练习,吓到我了。不过还好练习说明里面给出了逼近公式,主要代码如下:

1 func Sqrt(x float64) float64 {
2     e, z := 1e-15, 1.0
3     for math.Abs(z*z - x) > e {
4         z -= (z*z - x) / (2*z)
5     }
6     return z
7 }

e,也就是误差值,从小数点1位试到15位,发现15位刚刚好在开4的时候,返回值是2。小余15位的时候,会带有小数误差。当然,这个和算法本身关系不大,误差值按需取个小值即可。