添加两个带递归的矩阵

时间:2015-12-23 08:57:59

标签: recursion matrix

在我的编程课程中,我们只给了两个矩阵和递归。显然我们的教授打算让我们做一个递归方法,但仍然使用一个“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中的相应索引。

这是我能想到的最好的。

1 个答案:

答案 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);
}