Advantages
- invariably recursive functions are clearer, simpler, shorter,
and easier to understand than their non-recursive counterparts.
- the program directly reflects the abstract solution strategy
(algorithm).
With linear data structures, such as arrays and stacks, iteration
can be used instead, but with non-linear data structures,
such as trees, there is no obvious alternative to recursion.
Disadvantages
Just as recursion makes its easier to write simple and elegant
programs, it also makes it easier to write inefficient ones.