有关binary search 用递归的做法帮忙纠错一下

来源:百度知道 编辑:UC知道 时间:2024/07/06 19:34:44
主要部分就是binarySearch那部分,但是不知道怎么了,输入除14以外的其他数字都会陷入死循环,很郁闷!请各位帮忙指出错误!!

#include<stdio.h>
#define SIZE 15
int binarySearch (const b[],int searchKey,int start,int end);
void printHeader(void);
void printRow(const b[],int start,int mid,int end);

int main()
{
int a[SIZE];
int i;
int key;
int result;
for(i=0;i<=SIZE-1;i++){
a[i]=2*i;
}
printf("Enter a number between 0 and 28: ");
scanf("%d",&key);
printHeader();
result=binarySearch(a,key,0,SIZE-1);
if(result != -1){
printf("\n%d found in array element %d\n",key,result);
}
else{
printf("\n%d not found\n",key);
}
return 0;
}
int binarySearch(const b[],int searchKey,int start,int end)
{
int middle;
while(start<=end){
middle=(start+end)/2;
printRow(b,start,middle,end);
if(searchKe

1,改while为if
2,在添加else如下:
if(start<=end)
{
......
}
else
{
middle = -1;
}

3,修改return -1;为return middle;

#include<stdio.h>
#define SIZE 15
int binarySearch (const b[],int searchKey,int start,int end);
void printHeader(void);
void printRow(const b[],int start,int mid,int end);

int main()
{
int a[SIZE];
int i;
int key;
int result;
for(i=0;i<=SIZE-1;i++)
{
a[i]=2*i;
}
printf("Enter a number between 0 and 28: ");
scanf("%d",&key);
printHeader();
result=binarySearch(a,key,0,SIZE-1);
if(result != -1){
printf("\n%d found in array element %d\n",key,result);
}
else{
printf("\n%d not found\n",key);
}
return 0;
}
int binarySearch(const b[],int searchKey,int start,int end)
{
int middle;