Go

A Tour of GoのExercise: Loops and Functionsが難しい・・・

昨日からA Tour Of Goをはじめました。
皆さんオリジナル(英語版)をやって見るようにと進めてくれているのですが、まずは日本語を進めています。
そして早速Exercise: Loops and Functionsでつまづきました。
書いてあることが全くわからず飛ばそうかと思ったのですが、何度も読み返してようやく意味がわかりました。
ループ内でz -= (zz - x) / (2z)を実行してzと前回実行時のzの差が一定値以下になったらループを抜けるということだと思いとりあえず書いてみました。


package main

import (
    "fmt"
    "math"
)

func Sqrt(x float64) float64 {
    z := 1.0
    n := 0.0
    for i := 0; i < 10; i++ {
        z -= (z*z - x) / (2 * z)
        if math.Abs(z-n) < 0.0000001 {
            return z
        }
        n = z
    }

    return z
}

func main() {
    x := 2.0
    fmt.Println(Sqrt(x))
    fmt.Println(math.Sqrt(x))
}

結果


1.4142135623730951
1.4142135623730951

答えがわからないのですが、大きく外していないことをお祈り。

-Go

© 2024 ビー鉄のブログ Powered by AFFINGER5