import java.util.ArrayList; import java.util.List; public class Combinations { public List> combine(int n, int k) { List> result = new ArrayList>(); List path = new ArrayList(); combine(n, k, result, path, 1); return result; } private void combine(int n, int k, List> result, List path, int start) { if (k == 0) { result.add(new ArrayList(path)); return; } if (start > n) { return; } path.add(start); combine(n, k - 1, result, path, start + 1); path.remove(path.size() - 1); combine(n, k, result, path, start + 1); } }