Implement int sqrt(int x).
Compute and return the square root of x.
//此处返回值是int,故而一些地方需要注意。下面代码使用二分查找!还有另一种方法为,牛顿迭代法!
int sqrt(int x) {
int right,left,mid;
if (x < 2) return x;//负数同样直接返回
left = 1;
right = x;
while(left <= right)
{
mid = (right+left)/2 ;//防止溢出
if (x/(mid +1) < (mid+1) && (x/mid)>=mid)
{
return mid;
}
else if (x/mid > mid)
{
left = mid +1;
}
else
{
right = mid -1;
}
}
return mid;
}
//Implement doublesqrt(double x) //此种区别
判断是否
1、小于0
2、大于0,小于1
3、大于等于1
最后需要一个精确度!比如0.0001
double sqrt(double x)
{
double right,left,mid;
if (x <0) return x;//负数同样直接返回
left = 0;
right = x>1?x:1;
while(left <= right)
{
mid = (right+left)/2;
if ( fabs(x-mid*mid) <= 0.001)
{
return mid;
}
else if ( x>mid*mid )
{
left = mid ;
}
else
{
right = mid ;
}
}
return mid;
}