To anyone trying to understand recursion, I advice to learn basic Haskell. This is the language where recursion actually "clicked" for me.
All you need is very basic Haskell. You don't need functors, applicatives or monads. You only need simple functions, pattern matching, and maybe some parametric polymorphism to simplify the examples and make them more general:
fliplist :: [a] -> [a]
fliplist [] = []
fliplist (x:xs) = fliplist xs ++ [x]
l = [1,2,3,4,5,6,7]
f = fliplist l
main = print f