无缘无故的C段错误

标签 c cs50

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

相关文章:

c - 交换两个相邻元素的功能不起作用

c - 求和/添加整数数组中的所有其他组件失败

c - 使用 string.h 时 makefile 错误

c - 预期退出代码 0,而不是 1?

c - strtok 中的段错误

c++ - 使用 SFML 在第二台显示器上打开全屏窗口?

c - 命令提示符的字符串搜索 C 程序

iphone - 如何在Window中创建c/c++库,并在iPhone项目中使用?

c - 在c中从用户那里获取矩阵输入

c - 错误: expected ';' after expression and expression result unused