解法:牛顿迭代法
先上公式。对于
x
2
=
n
x^2=n
x2=n
迭代公式为:
x
k
+
1
=
x
k
+
n
x
k
2
x_{k+1}=\frac{x_k+\frac{n}{x_k}}{2}
xk+1=2xk+xkn
推导过程见数值分析、计算方法等相关书籍。
int mySqrt(int n){
if(0 == n) return 0;
double x0 = 2;
double eps = 0.1;
double x1;
for(;;)
{
x1 = (x0 + n/x0)/2;
if(fabs(x1-x0) < eps) break;
x0 = x1;
}
return (int)x1;
}