首先,对不起我的英语,这不是我的母语。
大家好,我的二进制搜索功能遇到问题。我需要使用布尔类型创建一个二进制搜索的递归函数(使用C语言),它是:
bool binary_search(int x, int array[], int m, int n){
int middle=(m+n)/2;
if(m>n) return(0);
else if(x == array[middle]) return(1);
else if(x < array[middle]) return(binary_search(x, array, m, middle-1));
else return(binary_search(x, array, middle+1, n));
}
这是主函数中的调用:
printf("type the element to search: \n"); scanf("%d", &x);
if(binary_search(x, A, 0,dim-1)) printf("Found!\n");
else printf("Not found!\n");
问题是,即使元素不在数组中,它也始终返回“未找到”。我试图更改if命令中的逻辑,但这只是使所有结果都变得“被发现”。如果有人可以帮忙,我会很高兴。
更新:我更改了“ =”问题,但是输出仍然错误,我打印了该函数的输出,并且始终为零
我发现了错误:
我在一个函数中生成随机数(“ random_numbers()”),并且“ dim”变量位于该函数内部,因此main()中的dim为0。因此,搜索的返回值始终为0。我感到有些愚蠢,但感谢大家的帮助。对不起,新手错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句