**Divide** the problem into a number of sub-problems that are smaller instances of the same problem.

**Conquer** the sub-problems by solving them recursively. If the sub-problem sizes are small enough, however, just solve the sub-problems in a straightforward manner.

**Combine** the solutions to the sub-problems into a solution for the original problem.