//Go Exercise: Loops and Functions
//1.Newton's method
package main
import (
"fmt"
"math"
)
//普通求解10次返回近似值
func Sqrt(x float64) float64 {
z := x / 2.0
for i := 0; i < 10; i++ {
z -= (z*z - x) / (2 * z)
}
return z
}
//无限接近求解,返回近似值
func Sqrt2(x float64) float64 {
z := x / 2.0
for {
y := z - (z*z-x)/(2*z)
if math.Abs(y-z) < 1e-10 {
return y
}
z = y
}
return z
}
func main() {
fmt.Println(Sqrt(2))
fmt.Println(Sqrt2(2))
}
//未完待续