我收到这个错误,说我没有使用变量……但在我的菜鸟眼中,看起来我是:
func Sqrt(x float64) float64 {
z := float64(x);
for i := 0; i < 10; i++ {
z := z - (z*z - x) / (2 * z);
}
return z;
}
谁能指出我对语言的遗漏?我认为这与=
vs.:=
和范围界定有关,但我不确定。
我收到这个错误,说我没有使用变量……但在我的菜鸟眼中,看起来我是:
func Sqrt(x float64) float64 {
z := float64(x);
for i := 0; i < 10; i++ {
z := z - (z*z - x) / (2 * z);
}
return z;
}
谁能指出我对语言的遗漏?我认为这与=
vs.:=
和范围界定有关,但我不确定。
在:=
你的 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
}
这是查看函数的另一种方法
func Sqrt(x float64) (z float64) {
z = x
for i := 0; i < 10; i++ {
z = z - (z*z - x)/(2*z);
}
return
}