c中的递归二进制搜索

时间:2013-02-03 17:49:00

标签: c binary-search

当我运行它时,它总是显示 Number Not Found ,当数字不是一个时,即它正确地为数字1运行。

我想知道这有什么问题,因为根据我的说法,它正确地运行了我的所有测试用例。

int search(int *a,int start,int end,int num)
{
  int mid;
  mid=(start+end)/2;
  if(start==end)
  {
    if(num==a[start])
      printf("Number Found");
    else
      printf("Number Not Found");
  }
  else
  {
    if(num>a[mid])
      search(&a[mid+1],mid+1,end,num);
    else
      search(&a[start],start,mid,num);
  }
}

int main()
{
  int arr[10]={1,2,3,4,5,6,7,8,9,10};
  search(arr,0,9,10);
}

1 个答案:

答案 0 :(得分:2)

您不应该向数组传递不同的指针;相反,您已经在更改您感兴趣的区间的结束索引。