不确定为什么这不会返回元素的索引?

时间:2017-10-07 23:56:04

标签: c++ recursion binary-search

不确定为什么这不会返回搜索到的元素的索引。输入是排序数组,其大小和要查找的元素。

int binarySearch(int a[], int size, int key){
  int mid = (size)/2;
  if(a[mid] == key){
    return mid;
  }else if(size ==1 || size ==0){
      return -1;
  }

  if(key<a[mid]){
    return binarySearch(a, mid, key);
  }else if (key > a[mid]){
    return binarySearch(a+(mid), size-mid, key);
  }
}

1 个答案:

答案 0 :(得分:0)

如果key > a[mid],则必须返回mid + binarySearch(a+(mid), size-mid, key),因为binarySearch只会看到数组的后半部分,因此会将索引返回到后半部分。