Существует два способа интерпретации «восходящего» требования.Более слабая интерпретация - «в каждом списке целые числа должны появляться в порядке возрастания».Более строгое толкование заключается в том, что «списки должны быть приведены по порядку».Я думаю, это то, что вам нужно, но я нашел простой итеративный способ удовлетворить более слабые требования.
Для n элементов считайте все n-битные числа.Если есть бит, соответствующий элементу, он находится в списке результатов.
public static void displaySubsets(List<Integer> sortedInts) {
int n=sortedInts.size();
long combinations = 1 << n;
for (int setNumber=0; setNumber<combinations; setNumber++) {
List<Integer> aResult = new ArrayList<Integer>();
for (int digit=0; digit<n; digit++) {
if ((setNumber & (1<<digit)) > 0) {
aResult.add(sortedInts.get(digit));
}
}
System.out.println(aResult.toString()+", ");
}
}
Результат для 1,2,3,4,5: [], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3], [4], [1, 4], [2, 4], [1, 2, 4], [3, 4], [1, 3, 4], [2, 3, 4], [1, 2, 3, 4], [5], [1, 5], [2, 5], [1, 2, 5], [3, 5], [1, 3, 5], [2, 3, 5], [1, 2, 3, 5], [4, 5], [1, 4, 5], [2, 4, 5], [1,2, 4, 5], [3, 4, 5], [1, 3, 4, 5], [2, 3, 4, 5], [1, 2, 3, 4, 5]
Да, я знаю, я теряю очки за то, что не использовал рекурсию.