Anda di halaman 1dari 31

Universidad Nacional de Trujillo

Facultad de Ciencias Fsicas y Matemticas

Escuela de Ingeniera de Informtica


Recursividad

Ing. Juan Orlando Salazar Campos


Trujillo - 2012

Contenidos

1 2

Introduccin. Desarrollo del tema.

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

Cuando tomamos una


fotografa de una fotografa

Ejemplo Matrushka

La Matrushka es una artesana tradicional rusa.


Es una mueca de madera que contiene otra mueca ms pequea dentro de s. Esta mueca, tambin contiene otra mueca dentro. Y as, una dentro de otra.

Diseo de estructuras grficas

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

ALGORITMO T(...) .... INICIO .... T(...) .... FIN

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

int Factorial(int n) { int fact; if (n==0) fact=1; else fact=n*Factorial(n-1); return(fact) }

Cmo funciona la recursividad?


Llamadas recursivas

Resultados de las llamadas recursivas

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?

Conforme el problema se reduce de tamao se alcanzar el caso base?


Cmo se usa la solucin del caso base para construir una solucin correcta al problema original?

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

No se puede usar cuando los mtodos usen arreglos largos.

Cuando el mtodo cambia de manera impredecible de campos no encuentra una solucin.


Ineficiencia inherente de algunos algoritmos recursivos.

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.

La iteracin y la recursin implican ambas repeticin:


la iteracin utiliza explcitamente una estructura repetitiva mientras que la recursin consigue la repeticin mediante llamadas repetidas a funciones.

La iteracin y la recursin implican ambas un test de


terminacin (condicin base).

La iteracin termina cuando la condicin del bucle


deja de cumplirse mientras que la recursin termina cuando encuentra el caso base.

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

Existen diferentes tcnicas para problemas como la Recursividad.

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

Anda mungkin juga menyukai