A recursive approach (which is what I would use) would involve breaking the problem into isomorphic subproblems: to find all permutations of a string, find all permutations of the string without a ...
Given a string, print all possible permutations (rearrangements) of its characters. For a string of length n, there are n! permutations.