在我的编程课程中,我们只给了两个矩阵和递归。显然我们的教授打算让我们做一个递归方法,但仍然使用一个“for”循环来解决它。 但是,我仍然相信使用for循环可以完成的一切都可以通过递归来完成。所以我试图这样做:
该方法应如下所示:
public static int[][] addMatrix(int[][] matrix1, int[][] matrix2)
不能传递额外的变量。
我正在努力解决这个问题,因为这是一个非常容易使用for循环的练习 - 我认为这对于递归是非常可行的。
有任何帮助吗?
- UPDATE
到目前为止,我的思路是这样的: 要始终采用其全尺寸的第一个矩阵,并通过采用matrix2 [matrix2.length]并在其上调用方法逐步打破第二个矩阵,这样我就知道在何处存储由方法计算的值而不使用索引变量。 插图:
X X Y Y
X X Y Y
X X Y Y
X是martix1中的变量,矩阵2是Y
X X
X X
X X Y Y
取最后一行“
X X
X X
X X Y
如果matrix2只有1x1,请将其添加到matrix1中的相应索引。
这是我能想到的最好的。
答案 0 :(得分:0)
使用“matrix2 [matrix2.length]”,因为索引从0开始,所以你将超出范围。
这里有一些伪代码,没有特定的语言会给你这个想法:
function addMatrices(mat1, mat2, result_mat /*pass by reference*/, i=0, j=0){
if (j >= mat1[0].size)
return result_mat;
result_mat[i][j] = mat1[i][j] + mat2[i][j];
i ++;
if (i == mat1.size){
i = 0;
j ++;
}
return addMatrices(mat1, mat2, result_mat, i, j);
}