二分实现很容易想,但是效率不够高,这里利用牛顿迭代法实现sqrt方法。
迭代公式:
ans = (ans + x / ans) / 2;
int mySqrt(int x) {
double ans = 1.;
while (fabs(ans * ans - x) > 1e-6) //精度
ans = (ans + x / ans) / 2;
return ans;
}
二分实现很容易想,但是效率不够高,这里利用牛顿迭代法实现sqrt方法。
迭代公式:
ans = (ans + x / ans) / 2;
int mySqrt(int x) {
double ans = 1.;
while (fabs(ans * ans - x) > 1e-6) //精度
ans = (ans + x / ans) / 2;
return ans;
}