【问题标题】:Add 2D arrays using a recursive method使用递归方法添加二维数组
【发布时间】:2018-02-06 09:23:27
【问题描述】:

我也想通过以下代码使用递归方法添加两个二维数组:

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

但是,此代码无法正常工作。没看懂。

谢谢!

【问题讨论】:

  • 请检查How to ask 并编辑您的问题。 “此代码不起作用”不是一个正确的问题。
  • 你能提供和例子吗?
  • 你之前问过nearly identical question

标签: java arrays algorithm recursion


【解决方案1】:

您有什么理由尝试递归地执行此操作吗?在这种情况下,迭代要容易得多:

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

【讨论】:

    猜你喜欢
    • 2014-08-07
    • 2018-07-16
    • 2014-02-17
    • 2019-10-17
    • 1970-01-01
    • 2013-01-01
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多