无缘无故的C段错误
C segmentation fault for no reason
我正在学习 edx 的 cs50 课程,运行 我的 C 代码遇到了问题。
它没有明显的原因给了我一个分段错误,而且这类问题的所有其他答案都太复杂了,我无法理解(我是初学者)
这是一个二进制搜索函数,如果找到值,它将 return 为真,否则它将 return 为假。
代码如下:
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
我正在学习 edx 的 cs50 课程,运行 我的 C 代码遇到了问题。 它没有明显的原因给了我一个分段错误,而且这类问题的所有其他答案都太复杂了,我无法理解(我是初学者) 这是一个二进制搜索函数,如果找到值,它将 return 为真,否则它将 return 为假。 代码如下:
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