Recursion is a foundational principle in most functional programming languages. Iteration (looping) in functional languages is usually accomplished via recursion.
Functional languages have seen somewhat of a renaissance lately, due to the need to elegantly handle more processor cores; functional languages help achieve this kind of concurrency by providing ways to better reason about your program without the complexity involved in locking mutable structures.