Let's say given a number of array, you should print out, all the subet of this array.
Example: [1, 2]
Output:
> ""
> 1
> 2
> 1,2
The number of subset should be 2^n...
function print_set(subset) { if (subset.length === 0) { console.log('empty'); } console.log(subset.filter(Boolean).join(',')); } function all_subsets(given_array) { function helper(given_array, subset, i) { if (given_array.length === 0) { print_set([]); } if (i === given_array.length) { print_set(subset); return; } // in case of not include the current item subset[i] = null console.log(`set i: ${i} to null`); helper(given_array, subset, i + 1); // in case of inlcude the current item subset[i] = given_array[i] console.log(`set i: ${i} to ${given_array[i]}`); helper(given_array, subset, i + 1) } let subset = new Array(given_array.length); helper(given_array, subset, 0); } const data = [1, 2]; all_subsets(data); /** set i: 0 to null set i: 1 to null "" set i: 1 to 2 2 set i: 0 to 1 set i: 1 to null 1 set i: 1 to 2 1 */