public List<List<Integer>> combine2(int n, int k){ List<List<Integer>> result = newArrayList<List<Integer>>(); if(k==0) return result; combine2(result, newArrayList<Integer>(), 1, n, k); return result; }
publicvoidcombine2(List<List<Integer>> currentResult, List<Integer> list, int start, int n, int k){ if(k==0){ currentResult.add(newArrayList<Integer>(list)); return; } while(start+k-1<=n){ list.add(start++); combine2(currentResult, list, start, n, k-1); list.remove(list.size()-1); } }