我正在编写使用 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'
}
非常感谢您的意见!
最佳答案
我认为如果将 compare(a,i+1);
替换为 return compare(a,i+1);
和 calcLineSum(a, i+1,sum);
使用 return calcLineSum(a,i+1,sum);
它应该编译。
每个 if
和 else if
都应该以 return
结束。
关于java - 如何在具有 if\else 条件的递归方法中正确放置 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35327296/