gpt4 book ai didi

c - 为什么不使用递归进行二分查找排序数组

转载 作者:行者123 更新时间:2023-11-30 18:48:21 26 4
gpt4 key购买 nike

我正在尝试实现一个二分搜索,其中 n 是我的数组的大小,并且它不适用于递归,只有当我不使用递归时它才起作用,我似乎不明白为什么

int mid = 0;
int low = 0;

bool search(int value, int values[], int n)
{
do
{
mid = (low + n)/2;
if(values[mid] == value)
{
return true;
}
else if (values[mid]>value)
{
n= mid -1;
return search(value, values, n);


}
else if (values[mid]<value)
{
low = mid + 1;
return search(value, values, low);

}
}
while (n > low);

return false;
}

最佳答案

问题是您调用递归调用来搜索数组的上半部分,并使用指向下半部分的指针。所以如果该值在上半部分,它就不会找到它。你需要这样的东西:

bool search(int value, int values[], int n) {
int mid = n/2;
if (n <= 0) {
return false;
} else if (values[mid] == value) {
return true;
} else if (values[mid] > value) {
return search(value, values, mid);
} else if (values[mid] < value) {
return search(value, values + mid + 1, n - mid - 1);
}
}

关于c - 为什么不使用递归进行二分查找排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46144823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com