gpt4 book ai didi

c - 递归二分查找无法正常工作

转载 作者:行者123 更新时间:2023-11-30 17:34:20 27 4
gpt4 key购买 nike

int BinarySearch(int A[], int p, int r, int value)
{
int q = (p + r) / 2;

if (A[q] == value)
{
return q; //value found
}
if (p == q)
{
return 0; //not found
}
if (A[q] > value)
{
return BinarySearch(A, p, q, value);
}
else
{
return BinarySearch(A, q + 1, r, value);
}
} //binary search ends here

现在的问题是,每当我想搜索数组的最后一个元素时,这段代码就会出错。谁能解释一下为什么吗?

最佳答案

根据第一个索引 p 和最后一个索引 r 制定搜索结束情况,

int BinarySearch(int A[], int p, int r, int value)
{
int q = (p + r) / 2;
if( p > r )
{
return 0;
}
if (A[q] == value)
{
return q; //value found
}
if (A[q] > value)
{
return BinarySearch(A, p, q-1, value);
}
else
{
return BinarySearch(A, q + 1, r, value);
}
}

关于c - 递归二分查找无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23385419/

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