package main
import (
"fmt"
)
func abs(f float64) float64 {
var a float64
if f >= 0 {
a = f
} else {
a = -f
}
return a
}
func Sqrt(x float64) float64 {
const p = 1e-6
// 初始猜测的平方根
r := 1.0
for abs(r * r - x) > p {
// 根据牛顿迭代公式 Xn+1 = Xn - F(Xn) / F'(Xn)不断迭代
r = (r + x / r ) / 2
}
return r
}
func main() {
fmt.Println(Sqrt(2))
}
参考:
https://blog.csdn.net/wumuzi520/article/details/7026808
欢迎补充指正!