我有一个在数组中查找元素的函数(二进制搜索)。我收到一条错误消息,提示“缺少退货声明”。(评论部分)编译器如何理解缺少 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; }
1 回答

潇潇雨雨
TA贡献1833条经验 获得超4个赞
编译器如何找到所有的执行路径?
它不是很聪明,它无法检测逻辑上永远无法到达的分支,它只是希望所有分支都以return
. 有关“不够聪明”的情况,请参见另一个问题。
在您的情况下,它发现可能没有任何if
条件为真,因此您一直到方法结束,它想在return
那里看到 a 。
在您的情况下,这种推理也是正确的:据我所知,它很可能会贯穿所有分支。
添加回答
举报
0/150
提交
取消