【发布时间】:2016-05-21 12:26:57
【问题描述】:
我正在编写使用 if\else 控制返回语句构建的递归代码。但是,当我编译时,我得到一个“缺少返回语句”,因为我所有的返回都在条件中。我正在添加“假”退货(该方法永远不会到达该退货),但我想知道是否有更智能的解决方案。
例如:
private static boolean compare(int[][] a, int i) {
if (i == a.length - 1) {
return true;
}
else {
if (calcLineSum(a[i], 0, 0) == calcLineSum(a[i + 1], 0, 0)){
compare(a, i + 1);
}
else {
return false;
}
}
return false; //<= = 'fake'
}
private static int calcLineSum(int[] a, int i, int sum) {
if (i == a.length)
return sum;
else {
sum = sum + a[i];
calcLineSum(a, i + 1, sum);
}
return sum; //<= = 'fake'
}
非常感谢您的意见!
【问题讨论】:
-
1) 格式化您的代码。 2)格式化你的代码。 3) 如果代码不应该到达那里 - 抛出异常。
-
是什么让您认为您的代码永远不会达到这些回报?它绝对会。
return仅退出该方法的 一个 调用,而不是整个递归堆栈。 -
不只是格式化,而是在
else语句而不是if语句上使用大括号让我畏缩。