Я пытаюсь написать рекурсивную функцию, чтобы получить все возможные комбинации из динамического номера List. Например, если у меня есть 3 списка
List 1 : {A,B}
List 2 : {B,C}
List 3 : {D}
Несмотря на то, что на выходе каждый элемент встречается однажды, я бы хотел сохранить вывод в структуре
List<List<List<elements>>>
Мой ожидаемый результат будет
L1 : A, L2 : B, L3 : D
L1 : A, L2 : C, L3 : D
L1 : B, L2 : B, L3 : D
L1 : B, L2 : C, L3 : D
Здесь номер списка может меняться динамически. Поэтому мне нужен динамический номер вложенного цикла для поиска комбинаций.
Вот что я пытаюсь. Просто игнорируй мой ужасный код.
public List<List<List<elements>>> combinations(int depth, List<List<elements>> allLists,List<List<List<elements>>> answerList){
if(depth==allList.size())
return answerList
}
else{
for(List<element> e : answerList){
for(int j=0; j<e.size();j++){
answerList.get(depth).get(j).add(allList.get(depth).get(j));
combinations (depth+1,allLists,answerList)
}
}
}
Пожалуйста, помогите мне, где я делаю неправильно?
EDIT:
моя идея - сохранить все комбинации вместе, чтобы
* ** 1 022 тысяча двадцать-один * {А}
будет самым глубоким списком в ответе
{L1, L2, L3}
будет вторым уровнем списка.
{L1, L2, L3}, {L1, L2, L3}
будет внешним списком. Таким образом, количество списков имеет значение здесь. все будет покрыто вышеуказанной структурой. мой окончательный вывод в приведенной выше структуре приведен ниже
{
{
{A},
{B},
{D}
},
{
{A},
{C},
{D}
},
{
{B},
{B},
{D}
},
{
{B},
{C},
{D}
}
}