【发布时间】:2014-12-17 04:04:28
【问题描述】:
首先,对不起,我的英语不是我的母语。
大家好,我的二进制搜索功能有问题。我需要做一个二分查找的递归函数(使用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 命令中的逻辑,但它只是使所有结果都变为“找到”。如果有人可以提供帮助,我会很高兴。
更新:我改了“=”的问题,但输出还是错了,我打印了函数的输出,结果总是零
【问题讨论】:
-
这个
x = array[middle]显然不是你想要的。你可能想要x == array[middle]
标签: c arrays recursion binary-search