Advantages

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.