我想使用这个代码的递归方法添加两个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);
}
}
但是,此代码无法正常工作。我不明白。
谢谢!
答案 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);
}