当前位置: 首页 > 知识库问答 >
问题:

控件到达非空函数的末尾(C++)

蔺劲
2023-03-14

我有一个经过修改的二分搜索函数,它在一个向量中找到最小值(最接近L的值--一个已知值)和最大值(最接近R的值--相同的已知值)。不幸的是,当我试图编译代码时,我得到了这个警告,我不知道为什么:控制到达非空函数的末端。

int bs_counts (vector <int> Arr, int x, int low, int high, bool searchDirection)
 {
     bool done = false;
     int new_middle = 0;
      int mid = (low + high)/2;
     
     while(low <= high && done == true)
     {
         if(Arr[mid] == x)
         {
             new_middle = mid;
             done = true;
         }
         else if(Arr[mid] > x)
         {
             high = mid - 1;
         }
         else
         {
             low = mid + 1;
         }
     }
        if(done == true)
        {
            return new_middle;
        }
        else
        {
            if(searchDirection == true)
            {
                return low;
            }
            else if (searchDirection == false)
            {
                return high;
            }
        }
 }

共有1个答案

慕才
2023-03-14

首先,请正确设置代码格式,因为看起来3个return语句在while循环中,而事实并非如此。

编译器迷茫了,看看这段代码。

if (done == true)
{
    return new_middle;
}
else
{
    if (searchDirection == true)
    {
        return low;
    }
    else if (searchDirection == false)
    {
        return high;
    }
}

我们可以明显地看到searchdirection将是truefalse,并且总会返回一些内容,但编译器可能忽略了这一点,请将其更改为如下所示。

if (done == true)
{
    return new_middle;
}
else
{
    if (searchDirection == true)
    {
        return low;
    }
    else
    {
        return high;
    }
}

警告也消失了。

 类似资料:
  • 我做了RGB到十六进制的转换。我的程序在联机编译器中运行得很好,但在代码战中有一个问题“控制可能到达非空函数的末端”。我该怎么办?是否应删除循环?

  • 问题内容: 是否可以在不首先完全定义函数的情况下调用函数?尝试执行此操作时,出现错误:“未定义 function_name ”。我来自C ++背景,因此这个问题使我感到困惑。 在工作之前声明该功能: 但是,尝试在未先定义函数的情况下调用该函数会带来麻烦: 在C ++中,一旦将其标头放在函数后,就可以在调用后声明一个函数。 我在这里想念什么吗? 问题答案: Python中一种惯用的方式是编写: 只要

  • 我不知道确切的原因,但是我的tableview的滚动条永远不会结束。 这是桌面视图的中间,一切看起来都很好 但当我走到尽头 滚动条没有到达终点... 我想我的约束是可以的(我使用的是autolayout),因为除了滚动条,tableview显示得很好。 我的视图控制器是一个,只包含一个。下面是一个屏幕截图,总结如下: 代码未添加任何约束。你知道我怎么调试这个吗? 提前谢谢 编辑:我试图删除和重新创

  • 问题内容: 在我当前的项目中,我们总是在Java源文件的末尾插入一个空的新行。我们还使用CheckStyle(具有错误级别)来强制执行此操作。 我一直在寻找这个主题很长时间,但是不幸的是,我找不到任何令人信服的理由。似乎其他开发人员对此无动于衷,因为他们只是选中了Eclipse formatter中的一个复选框,并且它是自动完成的。但是我仍然不知道为什么需要它,为什么它很重要。所以我的问题是: 为

  • 问题内容: 我有一个清单: 列表的长度不确定,因此我尝试将对象追加到list1的末尾,如下所示: 但是我的输出始终显示此错误:AttributeError:’NoneType’对象没有属性’append’ 这是因为list1从一个空列表开始吗?如何解决此错误? 问题答案: 实际 更改 列表。同样,它需要一个 item ,而不是一个列表。因此,您所需要做的就是 (请注意,在这种情况下,您可以使用。)

  • 问题内容: 我正在运行以下脚本: 当它运行时,我得到了70%的处理,并且出现以下错误: 消息3203,级别16,状态1,行1 在“ C:\ 20100920_Name_V2.bak”上读取失败:38(到达文件末尾。) 消息3013,级别16,状态1,行1 RESTORE DATABASE正在异常终止。 我不确定是什么问题。有人可以阐明一下吗?当我在其上执行RESTORE VERIFYONLY时,出