"Thinking Recursively" by Eric Roberts. Completely changed the way I think about recursive programming and easy to pick up.
https://cs.stanford.edu/people/eroberts/books/ThinkingRecurs...
https://cs.stanford.edu/people/eroberts/books/ThinkingRecurs...
I'd venture that besides recursion, the other key concepts in programming have been pointers and first-class functions. Getting a grasp on these 3 ideas has been essential to learning.