Combinatoric algorithms.
A recursive algorithm to enumerate combinations, i.e.
Enumerate all possible combinations of k integers between 1 and n.
The underlying data structure is an abacus of length n with k beads. The abacus is recursively truncated while beads are moved sequentially to the right.