Recursión es cuando una función se llama a sí misma para resolver una versión más pequeña del mismo problema. Toda recursión necesita un caso base (base case) que la detiene y un caso recursivo (recursive case) que avanza hacia el caso base.
La idea
Divide un problema en subproblemas idénticos más pequeños. Cada llamada empuja un marco en la pila de llamadas (call stack); los retornos los sacan.
Ejemplo
():
n <= :
n * factorial(n - )
factorial()
