Functional programs don't rely on
loops and the associated overhead of tracking the state of loops. Instead, functional programs try to rely on the much simpler approach of recursive functions. In some languages, the programs are written as recursions, but
Tail-Call Optimization (TCO) by the compiler changes them to
loops. We'll introduce some recursion here and examine it closely in Chapter 6, Recursions and Reductions.
We'll look at a simple iteration to test a number for being prime. A prime number is a natural number, evenly divisible by only 1 and itself. We can create a naïve and poorly performing algorithm to determine if a number has any factors between two and the number. This algorithm has the ...