编译器如何找到丢失的 return 语句?

我有一个在数组中查找元素的函数(二进制搜索)。我收到一条错误消息,提示“缺少退货声明”。(评论部分)


编译器如何理解缺少 return 语句?


当仅使用“if”时,编译器如何找到所有执行路径。没有 else-if 正在实施


public static int rank(int key, int []a, int lo, int hi)

    {

        if(lo>hi) return -1;

        int mid= lo+(hi-lo)/2;

        if(key<a[mid]) return rank(key,a,lo,mid-1);

        if(key>a[mid]) return rank(key,a,mid+1,hi);

        //else return mid;

    }


一只甜甜圈
浏览 138回答 1
1回答

潇潇雨雨

编译器如何找到所有的执行路径?它不是很聪明,它无法检测逻辑上永远无法到达的分支,它只是希望所有分支都以return.&nbsp;有关“不够聪明”的情况,请参见另一个问题。在您的情况下,它发现可能没有任何if条件为真,因此您一直到方法结束,它想在return那里看到 a 。在您的情况下,这种推理也是正确的:据我所知,它很可能会贯穿所有分支。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java