Contenidos
1 2
3
4
Desarrollo de ejemplos.
Conclusiones.
Introduccin
Soluciones
Introduccin
mbitos de estudio
Repeticin de Procesos conocidos. Cantidad de repeticiones. Procesos descomponen en subprocesos similares
Ejemplos comunes
Ejemplo Matrushka
Introduccin
Introduccin
Desarrollo
La recursividad es una tcnica de programacin muy potente que puede ser utilizada en lugar de la iteracin.
Permite disear algoritmos que den soluciones elegantes y simples, generalmente bien estructuradas y modulares, a problemas de gran complejidad.
Desarrollo
En qu consiste realmente la recursividad?. Es una tcnica que nos permite que un algoritmo se invoque a s mismo para resolver una "versin ms pequea" del problema original que le fue encomendado.
Desarrollo
Ejemplo
Factorial: n! = 1
n*(n-1)!
si n = 0
si n > 0
n * (n-1) * (n-2)!
Ejemplo
ALGORITMO Factorial(n) VARIABLES fact INICIO SI n= 0 ENTONCES fact =1 EN OTRO CASO fact = n*Factorial(n-1) FINSI DEVOLVER fact FIN
Ejemplo
Ejemplo
Ejemplo
int Potencia(int x, int n) { if (n==0) return 1; else return x* Potencia(x, n-1); }
Condiciones
Elementos Recursin
Caso Recursivo
Caso Base
Debe contar con el caso base por el cual la funcin ya no se llame a si misma. Cada vez que invoquemos a la funcin se debe acercar ms al criterio base. El nivel mximo de recursin debe ser finito y pequeo.
Diseo de recursiones
En el proceso de bsqueda de soluciones recursivas podemos plantearnos cuatro preguntas bsicas.
Cmo se puede definir el problema en trminos de uno o ms problemas ms pequeos del mismo tipo que el original? Qu instancias del problema harn de caso base?
Ventajas
Ventajas
El algoritmo es ms fcil de plantear haciendo al cdigo ms claro que sus correspondiente versin iterativa Algunos problemas parecen ser que solo tienen solucin recursiva por ejemplo las aplicaciones de inteligencia artificial.
Desventajas
Desventajas
Una sola llamada recursiva puede genera un gran nmero de llamadas recursivas (Lento consumo de memoria).
Hace trabajar ms a la computadora. Pero la claridad debe compensar a la sobrecarga.
Desventajas
Desventajas
Tipos de Recursin
Recursividad simple: Aquella en cuya definicin solo aparece una llamada recursiva. Se puede transformar con facilidad en algoritmos iterativos.
Recursin mltiple: Se da cuando hay mas de una llamada a si misma dentro del cuerpo de la funcin, resultando ms difcil de hacer que en forma iterativa. Ejemplo Fibonacci.
Tipos de Recursin
Recursividad anidada. En algunos de los argumentos de la llamada recursiva hay una nueva llamada as misma. Ejemplo: la funcin de Ackerman.
Recursividad cruzada o indirecta. Son algoritmos donde una funcin provoca una llamada a si misma de forma indirecta, a travs de otras funciones. Ejemplo: Determinar si un nmero es par invocamos a impar, y viceversa.
Recursin vs Iteracin
Tanto la iteracin como la recursin se basan en una
estructura de control.
Usos
Para resolver problemas
buscando una solucin y si no la encontramos regresar y probar otro camino (avance con retroceso). En la estructura de datos rboles todo es recursin.
Conclusiones
resolver
La tcnica recursiva es una alternativa en la solucin de problemas que se descomponen en subproblemas similares. El diseo de soluciones aplicando la recursividad son efectivas si se sabe plantear adecuadamente los componentes de la recursividad.
Trabajo
salazarcjo@gmail.com www.salazar.sisamec.com