我正在学习edx的cs50课程并且在我的c代码中遇到了问题。 它没有明显的原因给我一个分段错误,这类问题的所有其他答案都太复杂了,我无法理解(我是初学者) 它是一个二进制搜索函数,如果找到该值则返回true,否则返回false。 代码如下:
bool searchtruth(int vals[],int minimum, int maximum, int findval)
{
int min = minimum;
int max = maximum;
if(min - max == 1 && (findval < max &&findval > min))
{
return false;
}
int mid = min + ((min - max) / 2);
if(vals[mid] == findval)
{
return true;
}
else if(vals[mid] < findval)
{
return searchtruth(vals, mid , max, findval);
}
else if(vals[mid] > findval)
{
return searchtruth(vals, min , mid , findval);
}
else
{
return false;
}
}
答案 0 :(得分:1)
代码中有两处使用
min - max
并且在两个地方都应该
max - min