Programming assignment 3 recursive problems, subset and permutation paradigms