猿问

Go 如何计算迭代次数?

因此,我有一小段代码可以根据需要进行迭代,直到所寻求的值之间的差异非常大。我想在代码运行完成后计算并打印迭代次数,最好在我的主函数中(以及打印我需要的所有其他内容)。


编辑:好的,我已经设法做到了。我想知道是否有一种更简单的方法来计算迭代并将它们传递给输出函数。


func sqrt(x float64) (float64, int) {

    k := 1

    z := 1.0

    q := (z*z - x)/(2*z)

    for {

      if  math.Abs(-q) > 0.001 {

      z -= q

      q = (z*z - x)/(2*z)

      k += 1

      } else {

        break

      }

    }

    return z, k

}


func main() {

    k := 1

    z := 1.0

    z, k = sqrt(9)

    fmt.Println("Your sqrt = ", z)

    fmt.Println("Math Sqrt = ",math.Sqrt(9))

    fmt.Println("Iterations: ", k)

}


一只萌萌小番薯
浏览 236回答 2
2回答

元芳怎么了

您可以返回您的浮点值和一个 int(作为迭代次数)。我对您的示例进行了非常小的修改以进行演示。func sqrt(x float64) (float64, int) {    z := 1.0    i := 1    q := (z*z - x) / (2 * z)    for {        if math.Abs(-q) > 0.01 {            i++            z -= q            q = (z*z - x) / (2 * z)        } else {            break        }    }    return z, i}func main() {    f, i := sqrt(9)    fmt.Printf("result: %f iterations: %d\n", f, i)    fmt.Println(math.Sqrt(9))}

交互式爱情

您可以通过函数提供多个返回值:func main() {&nbsp; &nbsp; numLoops, newNum := sqrt(9)}func sqrt(x float64) (int, float64) {&nbsp; &nbsp; <implementation>}GoPlay 在这里: https: //play.golang.org/p/R2lV41EbEd
随时随地看视频慕课网APP

相关分类

Go
我要回答