c - c中的递归二进制搜索

标签 c binary-search

当我运行它时,当数字不是 1 时,它总是显示 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);
}

最佳答案

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

关于c - c中的递归二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14675353/

相关文章:

c - 遇到 CS50 Greedy.c 问题

C编程-如何将输出图片文件设置为.pgm格式?

c++ - 我可以在函数调用上使用std::lower_bound代替迭代器吗?

java - 二分查找compareTo字符串对象

c - 从文件读/写练习中的执行问题(新手)

c++ - 如何正确混合使用 C++ 和 C

c - 搜索不起作用需要一些建议

c++ - binary_search 通过其成员函数的返回变量查找类对象 [c++]

c - 当数组中的元素超过 44 个时,二进制搜索将停止工作

c - 从文件读取到字符数组,C