x的平方根-牛顿迭代基于Go
- 递归版牛顿迭代
package main
import (
"fmt"
)
func newton(n int)int{
if n==0{
return 0
}
return int(sqrt(float64(n), float64(n)))
}
func sqrt(x, n float64)float64{
res := (x+n/x)/2
if res==x{
return x
}
return sqrt(res, n)
}
func main(){
fmt.Println(newton(10))
}
- 循环版牛顿迭代
package main
import "fmt"
func newton(x int) int {
if x==0{
return 0
}
var n = x
for n*n>x{
n = (n + x/n) / 2
}
return int(n)
}
func main(){
fmt.Println(newton(6))
}