方法描述:
首先隨便猜一個近似值x,然後迭代地令x=(x+a/x)/2,迭代個六七次後x的值就已經相當精確了。
代碼實現:
int newtonSqrt(int x) {
if (x == 0) return 0;
double last = 0;
double res = 1;
while (abs(last-res)>1e-9)
{
last = res;
res = (res + x / res) / 2;
}
return int(res);
}
方法描述:
首先隨便猜一個近似值x,然後迭代地令x=(x+a/x)/2,迭代個六七次後x的值就已經相當精確了。
代碼實現:
int newtonSqrt(int x) {
if (x == 0) return 0;
double last = 0;
double res = 1;
while (abs(last-res)>1e-9)
{
last = res;
res = (res + x / res) / 2;
}
return int(res);
}