I learned functional programming many years ago, by reading the book COMMON LISP: A Gentle Introduction to Symbolic Computation by David S. Touretzky [1]. Incredible book, super beginner friendly; the chapter on Recursion in particular is one of my favourites. :)