Add recursive implementation, with notes.