#include <bits/stdc++.h>
int binarySearch(long long int N,int start,int end, int& num){
long long int mid = start + (end-start)/2;
//cout<<"Start: "<<start << " End: " << end<<" Mid: "<<mid<<endl;
long long int square = mid*mid;
if(start>end){
return num;
}
if(square<=N){
num = mid;
start = mid+1;
}else{
end = mid-1;
}
binarySearch(N,start,end,num);
return num;
}
int sqrtN(long long int N)
{
int start = 0;
int end = N;
int sqrt = 0;
binarySearch(N, start, end, sqrt);
return sqrt;
}
我正在写一个用递归二进制搜索求平方根的代码。在我的这个代码中,它对于非常大的数字是失败的,有人能帮助我解决这个问题吗
1条答案
按热度按时间nbnkbykc1#
此计算
可能导致整数溢出。
条件
应为: