void getBitCombinations(BitSet bs, int start, int current, int target) { if (current == target) { // success, so process the combination // (clone 'bs' so that we're sure it's not modified) foo.combinationHandlerMethod((BitSet) bs.clone()); return; } if (start == a.length) return; // failure bs.set(start); current++; getBitCombinations(bs, start + 1, current, target); bs.clear(start); current--; getBitCombinations(bs, start + 1, current, target); }
Example 2: A version of the code that passes solutions to a function that the code's author determines at or before compile time.