You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二分查找函数控制流图绘制疑问及return语句执行逻辑确认

二分查找函数的控制流图疑问解答

示例代码

int binsearch(int x, int v[], int n) {       
    int low, high, mid;                     // Line 1
    low = 0;                                
    high = n - 1;                           
    while (low <= high) {                   // Line 2
        mid = (low + high) / 2;             // Line 3
        if (x < v[mid]) {                   // Line 4
            high = mid - 1;                 // Line 5
        } else if (x > v[mid]) {            // Line 6
            low = mid + 1;                  // Line 7
        } else return mid;                  // Line 8
    }
    return -1;                              // Line 9
}

我的绘图思路

  • 前3行初始化代码构成一个基本块,作为控制流图的一个节点
  • 当x < v[mid]为真时,执行high更新后回到while条件判断
  • 当x < v[mid]为假时,检查x > v[mid]:
    • 若为真,执行low更新后回到while条件判断
    • 若为假,执行return mid退出函数
  • 当while条件不成立时,执行return -1退出函数

核心疑问

return mid(第8行)是否会直接终止函数,不会走到return -1(第9行)?我的理解是前者直接终止函数,此判断是否正确?

解答

你的判断完全正确。在C语言中,return语句的作用是立即终止当前函数的执行,并将指定的返回值传递给函数调用者。一旦第8行的return mid被执行,函数binsearch会立刻结束,后续的代码(包括while循环的剩余部分、第9行的return -1)都不会再被执行。

这也和你绘制控制流图的思路完全契合——return mid是一个终止节点,不会有任何边指向后续的return -1节点。


内容的提问来源于stack exchange,提问作者Hi There

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:50:04