美文网首页
求平方根

求平方根

作者: bocsoft | 来源:发表于2019-01-22 09:44 被阅读0次

实现 int sqrt(int x) 函数。

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

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

示例 1:

输入: 4
输出: 2

示例 2:

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

利用牛顿法求平方根
go 语言实现版本如下:

package sqrtx

func mySqrt(x int) int {
    res := x

    //利用牛顿法求平方根
    for res*res > x {
        res = (res + x/res) / 2
    }
    return res
}

package sqrtx

import (
    "fmt"
    "github.com/stretchr/testify/assert"
    "testing"
)

type para struct {
    x int
}

type ans struct {
    one int
}

type question struct {
    para
    ans
}

func Test_mySqrt(t *testing.T) {
    ast := assert.New(t)

    qs := []question{

        question{
            para{
                15,
            },
            ans{
                3,
            },
        },

        question{
            para{
                3,
            },
            ans{
                1,
            },
        },

        question{
            para{
                9,
            },
            ans{
                3,
            },
        },

        // 如需多个测试,可以复制上方元素。
    }

    for _, q := range qs {
        a, p := q.ans, q.para
        fmt.Printf("~~%v~~\n", p)

        ast.Equal(a.one, mySqrt(p.x), "输入:%v", p)
    }
}

相关文章

网友评论

      本文标题:求平方根

      本文链接:https://www.haomeiwen.com/subject/cbakjqtx.html