我得到这个错误,说我没有使用变量......但是对于我的noob眼睛,它看起来像我:
func Sqrt(x float64) float64 {
z := float64(x);
for i := 0; i < 10; i++ {
z := z - (z*z - x) / (2 * z);
}
return z;
}
有谁可以指出我对这种语言缺少什么?我认为这与=
与:=
和范围有关,但我不确定。
答案 0 :(得分:12)
for-loop中的:=
声明了一个新变量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
}
答案 1 :(得分:4)
这是另一种查看函数的方法
func Sqrt(x float64) (z float64) {
z = x
for i := 0; i < 10; i++ {
z = z - (z*z - x)/(2*z);
}
return
}