public static int BinarySearch_Res(int[] iArr, int x,int y){
int flag=-1,high=iArr.length,low=0;
while (iArr[y] != x) {
high = iArr[y] > x ? y - 1 : high;
low = iArr[y] < x ? y + 1 : low;
y = (high + low) / 2;
BinarySearch_Res(iArr, x, y);
}
flag=y;
return flag;
}
![](https://profile-avatar.csdnimg.cn/49f728aeb8f64d39a9984908303f4e6e_weixin_53827783.jpg!4)
求各位大神解答,为什么这个方法会递归失败?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- CSDN专家-三岁丫 2021-05-23 15:52关注
你这个二分问题很大,思路都有问题,建议你先参考这个,先看懂了,再背着写。
public static int recursionBinarySearch(int[] arr,int key,int low,int high){ if(key < arr[low] || key > arr[high] || low > high){ return -1; } int middle = (low + high) / 2; //初始中间位置 if(arr[middle] > key){ //比关键字大则关键字在左区域 return recursionBinarySearch(arr, key, low, middle - 1); }else if(arr[middle] < key){ //比关键字小则关键字在右区域 return recursionBinarySearch(arr, key, middle + 1, high); }else { return middle; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报