Tanto la recursión como la iteración se usan para ejecutar algunas instrucciones repetidamente hasta que alguna condición sea verdadera. Pero existe una diferencia importante entre ambas, primero conoceremos el concepto de recursividad.
Recursividad se refiere a una situación en la que una función se llama a sí misma una y otra vez.
Iteración permiten repetir una sentencias o conjunto de ellas.
La recursividad se usa para realizar algoritmos cortos y elegantes con menos código, mientras que la iteración presentan la habitual forma de uno o varios bucles.
Pero porque usar la recursividad en algoritmos cortos??
La recursividad usa la pila por lo tanto facilita las llamadas recursivas. Esto significa que una función es libre de llamarse de nuevo, porque se creará un nuevo stack frame para todas sus variables locales. Entonces al ejecutarse por primera vez la función se guardarán la variables, si la función se llama así misma guardará las variables nuevamente en la pila, junto a las variables anteriores. Si nosotros hacemos que la función se llame miles de veces las variables ocupan demasiada memoria, si queremos ejecutar varias instrucciones repetitivamente debemos de usar una iteración ya que no usa la pila. Ver este articulo Programas y procesos uso adecuado de la memoria. para entender mejor el uso de las pilas