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))
}
posted @ 2021-04-07 17:57  pangqianjin  阅读(85)  评论(0编辑  收藏  举报