2016-08-23
调用提供的其内部提供的API函数guess函数,可以对你的参数进行大小判断,之后使用一个循环,不断对参数进行二分法即可。
这里容易出错的地方在于二分法计算两个数加和的一半时,如果使用如下第一种方法会出现超过limit的情况,有可能是因为left + right的加和超出了int型数的最大界限,从而发生了这种结果,但使用第二种方法就可以避免这一问题。
mid = (left + right) / 2 mid = left + (right - left) / 2
实现代码如下:
public int guessNumber(int n) {
if (guess(n)== 0) return n;
int left=0;
int right=n;
while (left<right) {
int mid=left+(right-left)/2;
int re=guess(mid);
if (re==0){
return mid;
}else if(guess(mid)==-1){
right=mid;
}else{
left=mid;
}
// return left;
}
return left;
}