我收到此错误消息,说我没有使用变量……但是在我的菜鸟眼中,看起来我在:
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。将其变成平原=以解决问题。
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 }