【发布时间】:2023-02-05 22:48:37
【问题描述】:
该代码不会在最左边或最右边的位置打印元素的位置。我已经看了好几个小时了,请帮我找出问题所在。
type here
#include<stdio.h>
#define max 50
void binarysearch(int l,int r,int key,int num[])
{
int mid=(l+r)/2;
if(num[mid]==key)
{
printf("Element found at location %d",mid+1);return;
}
else if(num[mid]<key)
{
return binarysearch(l,mid-1,key,num);
}
else
{
return binarysearch(mid+1,r,key,num);
}
printf("Element not found ");return;
}
int main()
{
int i,key,size,num[max];
printf("Enter size of array : ");scanf("%d",&size);
for(i=0;i<size;i++)
{
printf("Enter the element : ");scanf("%d",&num[i]);fflush(stdin);
}
printf("Enter key to search : ");scanf("%d",&key);
binarysearch(0,size-1,key,num);
return 0;
}
我要发疯了。发送帮助
【问题讨论】:
-
您应该检查特殊情况,例如: r<l, r==l, r==l+1 。
-
永远无法达到“找不到元素”打印。
标签: c if-statement recursion binary-search function-definition