c - 使用具有返回类型的递归函数在 C 中进行二分搜索

标签 c recursion binary-search-tree infinite-loop

下面,我尝试使用递归函数编写一个简单的二分搜索程序。当我运行它时,它需要搜索数组和键作为输入,但之后编译器突然停止。也许是因为某个地方的无限循环。

#include<stdio.h>
int present_flag;
int binary_search(int array[],int low,int high,int key)
{
int mid=(high + low)/2;
if(low<=high)
{
    if (array[mid] == key)
    {
    printf("Key found at index %d \n",mid);
    return 1;
    }
        else if (array[mid] >key)
        return 0+binary_search(array,low,mid,key);
            else 
            return 0+binary_search(array,mid+1,high,key);;
}
else return 0;
}
main()
{
int array[9],i,n,key;
printf("Enter 9 numbers in asc order \n");
for(i=0;i<9;i++)
scanf("%d",&n);
printf("Enter number to be searched\n");
scanf("%d",&key);
present_flag=binary_search(array,0,8,key);
if (present_flag==0 )
printf("Number not present in array\n");
}

最佳答案

先填充数组

修复:

for(i=0;i<9;i++) //Assuming your n is 9
  scanf("%d",&array[i]);
              ^^^ not n

关于c - 使用具有返回类型的递归函数在 C 中进行二分搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19469365/

相关文章:

c - Windows 可执行文件返回失败

javascript - 在 AngularJS 单元测试中断言递归 $timeout 中的 http 调用次数

c - 包含多个整数的结构会出现运行时错误

Java:查找 BST 中未找到的节点的深度

c - 指针ABC。错误: invalid type argument of unary ‘*’ (have ‘struct config’ )

冲突类型错误

c - 预处理器常量评估

python - 使括号均匀吗?

c++ - 理解 C++ 中的递归

C++ 二叉搜索树实现、动态数组或结构/类?