Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了X的平方根的golang实现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

实现 int sqrt(int X) 函数

计算并返回 x 的平方根,其中 x 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

输入: 4
输出: 2
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,由于返回类型是整数,小数部分将被舍去。

首先遇到这种题目肯定要想到使用内置得api来解答:

//使用api来求解
func mySqrt(x int) int {
    f := float64(X)
    ff := math.Sqrt(f)
    return int(ff)
}
@H_404_62@其次我们可以使用牛顿法求平方根:

牛顿法:(以本题为例子)

X的平方根的golang实现

@H_673_69@计算平方根,其实就是计算

x^2 @H_502_92@=@H_502_92@n

的解

令f(X)=x2-n,相当于求解f(X)=0的解,如上图所示。

首先取x0,如果x0不是解,做一个经过(x0,f(x0))这个点的切线,与x轴的交点为x1。

同样的道理,如果x1不是解,做一个经过(x1,f(x1))这个点的切线,与x轴的交点为x2。

以此类推。

以这样的方式得到的xi会无限趋近于f(X)=0的解。

判断xi是否是f(X)=0的解有两种方法

一是直接计算f(xi)的值判断是否为0,二是判断前后两个解xi和xi-1是否无限接近。

经过(xi,f(xi))这个点的切线方程为f(X) = f(xi) + f’(xi)(x - xi),其中f‘(X)为f(X)的导数,本题中为2x。令切线方程等于0,即可求出xi+1=xi - f(xi) / f‘(xi)。

继续化简,xi+1=xi - (xi2 - n) / (2xi) = xi - xi / 2 + n / (2xi) = xi / 2 + n / 2xi = (xi + n/xi) / 2。

迭代公式就已经出来了

x = (x + n/X) / 2

那么代码

//使用牛顿法求平方根
func mySqrt1(x int) int {
    res := x
    //牛顿法求平方根
    for res*res > x {
        res = (res + x/res) / 2
    }
    return res
}

大佬总结

以上是大佬教程为你收集整理的X的平方根的golang实现全部内容,希望文章能够帮你解决X的平方根的golang实现所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。