Concepto de recursión
Es el acto de una función llamándose a sí misma. La recursión. es utilizada para resolver problemas que contienen subproblemas más pequeños. Una función recursiva puede recibir 2 entradas: un caso base (finaliza la recursión) o un un caso recursivo (continúa la recursión).
Esquema:
- El subprograma se invoca a sí mismo (esto es lo que lo convierte en recursivo).
- Cada llamada recursiva se hace con un parámetro de menor valor que el de la
anterior llamada. Así, cada vez se está invocando a otro problema idéntico pero
de menor tamaño.
- Existe un caso especial en el que se actúa de forma diferente, esto es, ya no se
utiliza la recursividad. Lo importante es que la forma en la que el tamaño del
problema disminuye asegura que se llegará a este caso especial o caso base. Esto
es necesario, porque de lo contrario el programa estaría ejecutándose
indefinidamente
Ejemplo: calcular el factorial de un número.
División y conquista
Una técnica que usa la recursión para resolver problemas, también la llaman Dividir y Conquistar.
- Dividir: dividir el problema en varios sub-problemas iguales de tamaño N/b.
- Resolver: cada uno de los subproblemas elegidos de manera recursiva.
- Conquistar: Combinar las sub-soluciones.
Ejemplo: búsqueda binaria