使用递归方法添加2D数组

时间:2018-02-06 09:23:27

标签: java arrays algorithm recursion

我想使用这个代码的递归方法添加两个2D数组:

public static int[][] x(int one[][],int two[][],int i,int j,int sum[][]){
    if(i==one.length-1 && j==(one[0].length-1)){
        return sum;
    }
    else if(j>one[0].length){
        j=0;i++;
        return x(one,two,i,j,sum);  
    }
    else {
        j++;
        sum[i][j]=one[i][j]+two[i][j];
        return x(one,two,i,j,sum);  
    }
}

但是,此代码无法正常工作。我不明白。

谢谢!

1 个答案:

答案 0 :(得分:2)

你有什么理由试图递归吗?在这种情况下,迭代更容易:

for (int i = 0; i < one.length; i++)
    for (int j = 0; j < one[i].length; j++)
        sum[i][j] = one[i][j] + two[i][j];

当然,您可以递归地获得相同的结果。从您的代码判断,我假设你想这样称呼它:x(one, two, 0, 0, new int[one.length][one[0].length])

您的主要问题是您在进行计算之前已经移动了索引,而且过早返回。

public static int[][] x(int one[][],int two[][],int i,int j,int sum[][]) {
    if (j == one[i].length) {
        if (i == one.length - 1)
            return sum;
        i++;
        j = 0;
    }
    sum[i][j] = one[i][j] + two[i][j];
    return x(one, two, i, j + 1, sum);
}