当我运行它时,当数字不是 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/