Recursion and divide-and-conquer — throwing a large problem back at a smaller self
This chapter explains how to design recursion by splitting into a base case and a recursive step. It covers counting work with a recursion tree, that the call stack consumes space, merge sort vs. quicksort as divide-and-conquer, when stable sort is required, and choosing between recursion and iteration.