How do you generate all subsets of a set, and what is the complexity of the result?
The cleanest recursive formulation is: the subsets of a list are the subsets that do not contain the first element, plus the subsets that do, with the first element added to each of them. That gives a direct recursion with a single base case, the empty list, whose only subset is the empty set.
An equivalent iterative version starts with a single empty subset and, for each element, adds a copy of the current list of subsets with that element appended. Both produce the same set of answers.
The complexity is the interesting part. A list of n elements has exactly two to the power n subsets, so any algorithm that returns them all must do at least that much work just to produce the output. The recursive version runs in O of n times two to the power n time, because there are two to the power n calls and each one does an amount of work proportional to the size of the subset it is copying. The bitmask version runs in O of n times two to the power n as well, because it scans every element for every mask.
The trade-off to name is that the output size dominates everything, so the cleverest possible constant factors barely matter. What does matter is whether you materialise the whole answer set or generate it lazily. A generator that yields one subset at a time uses O of n space instead of O of n times two to the power n, which is the right answer when the caller only needs to count them or stop early.