Recursion is essential to most types of programming (imperative vs functional is an entirely other topic, maybe for another day) but it's generally not understood even by people who use it for looping every other day. In fact, the act of mentioning the stack can result in blank stares every now and then.
Stumbled across a rather helpful video when I attempted to explain it to a mate of mine. I might add that we've been cutting code together for over a decade and the fact that he didn't know what the stack was, or how it functioned, never really came up. That shows you just how much we've abstracted ourselves from machine code, and how ineffective we've become in order to save time.