Animated Program Design
It introduces the reader to generative recursion, heuristic searching, accumulative recursion, tail recursion, iteration, mutation, loops, program correctness, and vectors. Part III then explores a new type of recursion called accumulative (or accumulator) recursion.