Java 寻找二维数组的可能组合

Java 寻找二维数组的可能组合,java,arrays,recursion,Java,Arrays,Recursion,我在使用Java时遇到了以下问题。我会把我的代码放在这篇文章的底部。我得到了大多数组合,但是我无法找到一种方法,使我的列变量在递归调用的其余部分为0,这将有助于我获得所有组合。该解决方案必须适用于所有尺寸的二维阵列。最好我希望解决方案是完全递归-没有循环。感谢您提供的任何见解 给定二维数组的定义,如下所示: String[][] data = { {"A", "B"}, {"1", "2"}, {"XX","YY","ZZ"} }; 编写一个递归程序,按顺序输出每个子阵列的所有组合。在上

我在使用Java时遇到了以下问题。我会把我的代码放在这篇文章的底部。我得到了大多数组合,但是我无法找到一种方法,使我的列变量在递归调用的其余部分为0,这将有助于我获得所有组合。该解决方案必须适用于所有尺寸的二维阵列。最好我希望解决方案是完全递归-没有循环。感谢您提供的任何见解

给定二维数组的定义,如下所示:

String[][] data = {
 {"A", "B"},
 {"1", "2"},
 {"XX","YY","ZZ"}
};
编写一个递归程序,按顺序输出每个子阵列的所有组合。在上一个示例中,所需的输出可能如下所示:

A 1 XX
A 1 YY
A 1 ZZ
A 2 XX
A 2 YY
A 2 ZZ
B 1 XX
B 1 YY
B 1 ZZ
B 2 XX
B 2 YY
B 2 ZZ
您的程序应该可以处理任意大小的任意维数组。例如,考虑以下输入数组:

String[][] data = {
 {"A"},
 {"1"},
 {"2"},
 {"XX","YY"}
};
应输出:

A 1 2 YY
A 1 2 YY
到目前为止,我的解决方案是:

private String[][] data = {
        {"A", "B"},
        {"1", "2"},
        {"XX","YY","ZZ"}
};

public void combinations() {
    helperMethod("",0, 0);
}

private void helperMethod(String oldCombination, int row, int col) {
    String newCombination = oldCombination + data[row][col];

    if (row == data.length - 1) {
        System.out.println(newCombination);
    }

    if (row < data.length - 1) {
        helperMethod(newCombination, row + 1, col);
    }

    if (col < data[row].length - 1) {
        helperMethod(oldCombination, row, col + 1);
    }
}
专用字符串[][]数据={
{“A”,“B”},
{"1", "2"},
{“XX”、“YY”、“ZZ”}
};
公共空间组合(){
helperMethod(“”,0,0);
}
私有void helperMethod(字符串组合、整行、整列){
字符串newcommbination=oldCombination+data[row][col];
if(行==data.length-1){
System.out.println(newCombination);
}
如果(行
移动到下一行时,必须将列重置为零:

if (row < data.length - 1) {
    helperMethod(newCombination, row + 1, 0); // 0 instead of col
}
if(行
有了这个小小的改变,它似乎可以正常工作,至少在您提供的测试用例中是如此