为什么我在O(logn)中用二进制搜索方法计算平方根的代码出现浮点异常


long long int floorSqrt(long long int x) 
{
// Your code goes here   
long long int l=0 , r = x, ans;
while(l<=r){
long long int mid= (int)(l+r)/2;
long long int m = mid*mid;
if( m == x){
return mid;
}
if(mid>= (int)x/mid){
r = mid -1;
}
if( mid <=(int)x/mid){
l = mid+1;
ans = mid;
}
}
return ans;
}

这是计算给定数字X的平方根的函数,使用二进制搜索在o(logn)中完成我使用的是GFG代码编译器,使用的是gcc5.4

您可以尝试更改函数:

long long int floorSqrt(long long int x) 
{
// This will make sqrt(1) = 1, sqrt(0) = 0
if (x < 2) {
return x;
}
...

使得将处理将导致CCD_ 1永远等于CCD_ 2的任何x值。或者,你可以在while循环中检查mid == 0,然后再除以它

相关内容

  • 没有找到相关文章

最新更新