题目:

​int sqrt(int x)​​.

x.


思路:牛顿迭代法,公式:,最终公式:

xi+1=xi - (xi- n) / (2xi) = xi - xi / 2 + n / (2xi) = xi / 2 + n / 2xi = (xi + n/xi) / 2,参考链接:https://en.wikipedia.org/wiki/Newton%27s_method 


代码:


class Solution {
public:
int mySqrt(int x) {
if(x==0)
return 0;
double res = 1;
double last = 0;
while(res!=last)
{
last = res;//每次迭代update last value
res = (res + x/res)/2;

}
return int(res);
}
};