9

我收到这个错误,说我没有使用变量……但在我的菜鸟眼中,看起来我是:

func Sqrt(x float64) float64 {

    z := float64(x);

    for i := 0; i < 10; i++ {
        z := z - (z*z - x) / (2 * z);
    }

    return z;
}

谁能指出我对语言的遗漏?我认为这与=vs.:=和范围界定有关,但我不确定。

4

2 回答 2

12

:=你的 for 循环中声明了一个新变量z,它隐藏了外部z. 把它变成一个平原来=解决问题。

func Sqrt(x float64) float64 {

    z := x

    for i := 0; i < 10; i++ {
        z = z - (z*z - x) / (2 * z);
    }

    return z;
}

顺便说一句,为了获得相同的精度和更快的速度,您可以尝试以下实现,它一次执行两个步骤:

func Sqrt(x float64) float64 {
    z := x
    for i := 0; i < 5; i++ {
        a := z + x/z
        z = a/4 + x/a
    }
    return z
 }
于 2013-08-14T20:32:25.657 回答
4

这是查看函数的另一种方法

func Sqrt(x float64) (z float64) {
    z = x
    for i := 0; i < 10; i++ {
        z = z - (z*z - x)/(2*z);
    }
    return
}
于 2013-08-15T09:48:12.200 回答