我正在尝试学习Java,这是我第一次在这里问问题。
由于此方法中缺少return语句,因此我的程序无法编译,但是我似乎找不到错误的地方...

static double[][] matrixPow(double[][] matrixA, int e) {

    if (e == 0) {
        double [][] I = new double[matrixA[0].length][matrixA.length];
        for (int k = 0; k < matrixA.length; k++) {
            I[k][k] = 1;
        }
        return I;
    } else if ((e % 2) == 0) {
        return matrixPow( matrixMult(matrixA, matrixA), e/2);
    } else if ((e % 2) == 1) {
        return matrixMult(matrixA, matrixPow(matrixA, (e - 1)));
    }
}

假定该方法以整数e的幂计算矩阵。

最佳答案

您正在使用else if语句,并且如果所有语句都失败,则没有return语句。您需要在函数末尾或else块中返回一些内容。

static double[][] matrixPow(double[][] matrixA, int e) {

 //Einheitsmatrix
 if (e == 0) {
  double[][] I = new double[matrixA[0].length][matrixA.length];
  for (int k = 0; k < matrixA.length; k++) {
   I[k][k] = 1;
  }
  return I;
 }
 //Der eine Kram
 else if ((e % 2) == 0) {
  return matrixPow(matrixMult(matrixA, matrixA), e / 2);
 }
 //der andere Kram
 else if ((e % 2) == 1) {
  return matrixMult(matrixA, matrixPow(matrixA, (e - 1)));
 }
 // we return null in case every other cases fails.
 return null
}

10-08 14:52