2019年12月20日 星期五

sqrt(x)的實作方法

A tour of Go裡面學到的

給定一個值x, 找出z, 使得z平方最接近x
(找出x的平方根)

裡面提到可以運用Newton's Method

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

z從1開始猜,
跑個十次, 每次的值會越來越接近x

double sqrt(int x) {
    double z = 1;
    for (int i = 0; i < 10; ++i) {
        z -= (z * z - x) / (2 * z)
    }
    return z;
}

沒有留言:

張貼留言