记录一下码代码时遇到的问题
if (index1 == m) {
return nums2[index2 + k - 1];
}
if (index2 == n) {
return nums1[index1 + k - 1];
}
if (k == 1) {
return min(nums1[index1], nums2[index2]);
}
int newIndex1 = min(index1 + k / 2 - 1, m - 1);
int newIndex2 = min(index2 + k / 2 - 1, n - 1);
int pivot1 = nums1[newIndex1];
int pivot2 = nums2[newIndex2];
if (pivot1 <= pivot2) {
k = k - (newIndex1 - index1 + 1);
index1 = newIndex1 + 1;
}
else {
k = k - (newIndex2 - index2 + 1);
index2 = newIndex2 + 1;
}

它的意思是:控制到达非void函数的结尾。就是说你的一些本应带有返回值的函数到达结尾后可能并没有返回任何值。这时候,最好检查一下是否每个控制流都会有返回值。
修改后的代码段
while(true) {
if (index1 == m) {
return nums2[index2 + k - 1];
}
if (index2 == n) {
return nums1[index1 + k - 1];
}
if (k == 1) {
return min(nums1[index1], nums2[index2]);
}
int newIndex1 = min(index1 + k / 2 - 1, m - 1);
int newIndex2 = min(index2 + k / 2 - 1, n - 1);
int pivot1 = nums1[newIndex1];
int pivot2 = nums2[newIndex2];
if (pivot1 <= pivot2) {
k = k - (newIndex1 - index1 + 1);
index1 = newIndex1 + 1;
}
else {
k = k - (newIndex2 - index2 + 1);
index2 = newIndex2 + 1;
}
}
}
本文记录了在码代码过程中遇到的关于非void函数结束前未返回值的问题,详细解析了如何确保所有控制流都有返回值,避免程序运行错误。

2169

被折叠的 条评论
为什么被折叠?



