The only simple and universal answer to which is better, recursion or iteration, is ... it depends.
Recursion sometimes, but not always, yields simpler and more elegant source code. Simpler and more elegant source code is usually easier to review and easier to maintain. It may have a smaller footprint in executable memory. Each recursive invocation gets its own set of automatic variables, so the invocations are protected from unintended interactions with other invocations.
Iteration almost always uses less stack space and may run a little faster for nominal conditions. All iterations have equal access to the function's automatic variables so it is easier to make state information available to all iterations.
Which is better depends on your situation. For example, an embedded application may not be able to tolerate the possibly unbounded stack usage of a recursive function.