¿Cómo se repite algo sin ciclos? En programación funcional, una función puede usarse a sí misma con un problema un poco más pequeño. Eso se llama recursión.
Piensa en las muñecas rusas: abres una y adentro hay otra más pequeña, y otra, hasta llegar a la más chiquita, que ya no se abre. Esa última es el caso base.
El factorial de 4 es 4 × 3 × 2 × 1 = 24. Se puede decir así: el factorial de n es n por el factorial de n − 1, y el factorial de 0 es 1 (el caso base).
Ejecuta y mira las muñecas: cada llamada abre una muñeca dentro de la anterior. Cuando se llega al caso base, las muñecas se cierran una por una, de adentro hacia afuera, devolviendo su resultado.
¿Te acuerdas de la pila de llamadas de BitCPU? Cada muñeca abierta es un CALL que todavía no hizo su RET.
Para pensar
- ¿Qué fue fácil?
- ¿Qué fue difícil?
- ¿Otro paradigma lo habría resuelto mejor? ¿Cuál y por qué?