I originally used an iterative implementation, in keeping with `simple-`, but the Ghost of Whiteboard Interviews Past reared its ugly head and I went all recursive.