1
Javaを使用して次の問題に取り組んでいます。私はこの記事の最後に私のコードを入れます。私はほとんどの組み合わせを取得しますが、すべての組み合わせを取得するのに役立つ再帰呼び出しの残りの部分で、列変数を0にする方法を見つけることができません。ソリューションは、すべてのサイズの2次元配列に対して機能する必要があります。私は、ソリューションが完全に再帰することが望ましいと思います。ループはありません。あなたが提供する可能性のある何らかの洞察をありがとう。ような2次元配列の定義は、以下を考える2次元配列の可能な組み合わせを見つける
:
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);
}
}