我正在学习 edx 的 cs50 类(class),但我的 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;
}
}
最佳答案
代码中有两个地方使用了
min - max
这两个地方都应该是
max - min
关于无缘无故的C段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39003222/