Toon Daeleman, developer at Engagor, explains how functional languages use recursion instead of loops.

Most programming languages have language structures to loop through lists and do interesting stuff with those lists. When you're used to programming using one of those languages, it can be pretty terrifying to have your basics taken away from you when you jump into a functional programming language like Scheme or Haskell. Let's see what the problem is that functional languages have with loops and how they solved it.

https://engagor.github.io/blog/2018/06/27/lambda-recursion/