java - 如何在具有 if\else 条件的递归方法中正确放置 return 语句

标签 java recursion return

我正在编写使用 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); 它应该编译。

每个 ifelse if 都应该以 return 结束。

关于java - 如何在具有 if\else 条件的递归方法中正确放置 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35327296/

相关文章:

java - 剪刀石头布 if 语句不起作用

java算术

java - 我无法弄清楚扫雷递归算法

javascript - 为什么当我调用 .length 时这个数组未定义?

java - 数学问题导致百分比错误

java - 我必须将输入文件放在 eclipse(java) 中的哪里才能写入它

c - C中的递归打印函数

javascript - 我的函数的值未定义

ios - 访问超出 Swift 范围的变量

C exit 表现得像 return 吗?