At each position in the permutation, try every remaining unused element. Track which elements have been used with a boolean array or by swapping elements in place. Choose an unused element for the current position, mark it as used, recurse to fill the next position, then unmark it to backtrack. When all positions are filled, record the permutation. The decision tree has n choices at the first level, n minus one at the second, and so on, producing n factorial total permutations.