C分段故障无缘无故

时间:2016-08-17 17:48:05

标签: c cs50

我正在学习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;
    }

}

1 个答案:

答案 0 :(得分:1)

代码中有两处使用

min - max

并且在两个地方都应该

max - min