本题源自leetcode
-------------------------------------------------------------------------
思路1 :每次都用结果的一半来求解。
代码:
int mySqrt(int x) {
long r=x;
while(r*r>x){
r=(r+x/r)/2;
}
return r;
}
思路2:
int mySqrt(int x) {
if(x==0)
return 0;
int l=1;
int r=x;
long res=0;
while(l<=r){
int mid=(l+r)>>1;
if(mid<=x/mid){
l=mid+1;
res=mid;
}else{
r=mid-1;
}
}
return res;
}