Interesting observations. Maybe the naive recursive version (as opposed to a more optimized recursive version) and the iterative loop are both the "simplest" versions, but from different perspectives. The iterative one is simplest if you have to make a computer take over from you to calculate Fib(n). It's obvious to make the computer mimic your pencil and paper algorithm.

The naive recursive algorithm is simple in the sense of it's similarity to the mathematical definition of Fibonacci. It's telling the computer what to do, not as much how to do it as the iterative loop.

Whichever way, I'm more used to imperative programming, so if I do exercises, I try to implement it in a functional way just to stretch my brain a bit. It gives me a feeling of accomplishment if I could figure out how to do something I could only imagine doing with loops and mutation without those tools. And I get enough practice in those at my job anyway. Microcontrollers are stateful by nature. So I just play around after work when I get the opportunity