【发布时间】:2013-10-19 18:13:03
【问题描述】:
下面,我正在尝试使用递归函数编写一个简单的二进制搜索程序。当我运行它时,它会将要搜索的数组和键作为输入,但之后编译器会突然停止。可能是因为某处的无限循环。
#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");
}
【问题讨论】:
-
它是怎么开始运行然后编译器停止的?你是不是和那个挖掘机搞混了?
-
只是想知道:您是否意识到您的数组从未被填充,因为您只是将输入存储在 n 9 次以上?请帮自己(和我们)一个忙:正确缩进代码。
-
你为什么要加零加
binary_search()返回值?
标签: c recursion binary-search-tree infinite-loop