En mi primer día de clases en Programación 2 estuvimos viendo recursividad. ¿Qué es recursividad? Es la forma en la que se especifica un proceso basado en su propia definición. Para entenderlo, voy a citar el ejemplo de mi profesor:
Para ir de un punto A a un punto B puedo ir caminando de a un paso, entonces teniendo la función “ir_al_punto_B” puedo escribir la primer acción que es “dar_un_paso”, en pseudocódigo sería:
ir_al_punto_B()
{
dar_un_paso;
return ir_al_punto_B();
}
Ahora, ¿qué pasa cuando llego al punto B? Si no hay un corte, mi función se convierte en un bucle infinito provocando un excesivo uso de memoria provocando el cierre de mi programa. Para solucionar esto, se hace:
ir_al_punto_B()
{
dar_un_paso;
si no llegué al punto B
ir_al_punto_B();
}
Por ejemplo, el factorial.

3! = 3 · (3-1)!
= 3 · 2!
= 3 · 2 · (2-1)!
= 3 · 2 · 1!
= 3 · 2 · 1 · (1-1)!
= 3 · 2 · 1 · 0!
= 3 · 2 · 1 · 1
= 6
unsigned int factorial(unsigned int n)
{
if (n > 1)
{
return n * factorial(n - 1);
}
else
{
return 1;
}
}
Función recursiva para la Multiplicación:
unsigned int multiplicacion(unsigned int a, unsigned int b)
{
if (b == 0)
{
return 0;
}
else
{
return a + multiplicacion(a, b - 1);
}
}
¿Cuál es su funcionamiento interno?
¡Tener en cuenta la función de arriba para el seguimiento!
1- Al no ser 0(cero) el valor de b, se analiza la parte falsa del IF y se hace un return llamandose a si misma.
2- Cuando se procesa otra vez la función, el valor de b sigue siendo diferente a 0(cero), se hace un return llamandose a si misma.
3- Luego de este último return, el valor de b pasa a valer 0(cero) y se termina la función quedando pendiente todas las llamadas a la función volviendo hacia atrás devolviendo los resultados. En esta instancia, el return devuelve la suma de 2 + 0 (el resultado de multiplicacion(2, 0) es 0) retornandosela a la instancia anterior.
4- En esta instancia, el valor que devuelve el return es 2 + 2. El resultado de multiplicación(2, 1) es 2). Luego, el valor 4 de este return pasa a la siguiente instancia: 2 + multiplicacion(2, 2) => 2 + 4 = 6 => 2 x 3 = 6
Esto es una introducción básica a recursividad, la semana próxima estaré posteando más cosas. ¡Espero que les sirva!