go - 如何计算 Go 的迭代次数?

标签 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)
}

最佳答案

您可以返回您的浮点值和一个整数(作为迭代次数)。我对您的示例进行了非常小的修改以进行演示。

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))
}

关于go - 如何计算 Go 的迭代次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37733720/

相关文章:

python - 直接调用与 Python 子进程时 GOPATH 的解释不同

go - 在 Go 中获取 unicode 脚本名称

go - 如何初始化一个 zap 记录器并在其他 Go 文件中重用它?

recursion - 在go中使用递归获取深度嵌套结构

nginx - 去websocket,nginx代理这个对吗?

json - 解码大流 JSON

mongodb - Mongodb collection.Find()返回过滤后的数据

http - golang从套接字解析分块的HTTP响应-逐 block 读取

pointers - golang 类型断言,接口(interface){}(指针)和接口(interface){}(对象)有什么区别?

go - 在单个项目中使用不同版本的 go 包