我正在尝试学习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
}