gpt4 book ai didi

c - 二进制搜索找不到正确的值

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:41 25 4
gpt4 key购买 nike

我创建了一个包含 1000 个元素的 vector ,元素的值就是索引本身V[100] = 100, V[50] = 50 等

当我按值调用二分查找时,它必须返回索引给我,它本身是什么所以 binary_search(vector, begin, end, 50) 必须返回给我 50,但返回 30。我尝试使用 gdb 进行调试,但找不到任何错误。

代码:

int rbb(int *v, int left, int right, int val) 
{

int mid = (left + right) / 2; //middle element

if (right < left) //stop codition, pointers shifted
return -1;

if (val == v[mid]) //found value
return mid;

if (val > v[mid]) //value is on vector right portion
rbb(v, mid+1, right, val);

if (val < v[mid]) //value is on vector left portion
rbb(v, left, mid-1, val);

}

int main ()
{

int v[1000];

for (int i = 0; i < 1000; i++)
v[i] = i;

int x = rbb(v, 0, 999, 300);
printf("%d", x);
}

最佳答案

您的代码的问题是您没有从递归调用 if rbb 函数返回值。你应该修改你的代码

if (val > v[mid]) //value is on vector right portion
return rbb(v, mid+1, right, val);

if (val < v[mid]) //value is on vector left portion
return rbb(v, left, mid-1, val);

关于c - 二进制搜索找不到正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58668146/

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