Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ESTRUCTURA DE DATOS
UNIDAD 2
RECURSIVIDAD
ING. EN INFORMTICA
CONTENIDO
-Concepto de recursividad -Como solucionar problemas recursivos -Divide y vencers: Un problema complejo se divide en otros problemas mas sencillos (del mismo tipo). - Funcionamiento de un algoritmo recursivo - Diseo de algoritmos recursivos - Recursividad vs Iteracin - Las definiciones recursivas de funciones en matemticas - Ejemplos
RECURSIVIDAD
La recursividad consiste en realizar una definicin de
un concepto en trminos del propio concepto que se est definiendo. Forma parte del repertorio para resolver problemas en Computacin y es de los mtodos ms poderosos y usados. Los algoritmos recursivos ofrecen soluciones estructuradas, modulares y elegantemente simples. La recursividad es un concepto fundamental en matemticas y en
computacin. Una definicin recursiva dice cmo obtener conceptos nuevos empleando el mismo concepto que intenta describir.
mbitos de aplicacin: -General -Problemas cuya solucin se puede hallar solucionando el mismo problema pero con un caso de menor tamao. Razones de uso: -Problemas casi irresolubles con las estructuras iterativas. -Soluciones elegantes. -Soluciones ms simples.
Como solucionar problemas recursivos: Divisin sucesiva del problema original en pequeos, del mismo tipo que el inicial. uno o varios ms
Se van resolviendo estos problemas ms sencillos. Con las soluciones de stos se problemas ms complejos. construyen las soluciones de los
Ejemplo: static int potencia (int x, int n) { if (n==0) //caso base// return 1; else //caso general// return x * potencia (x, n-1); }
-Los casos base: Corresponden a situaciones que se puede resolver con facilidad. - Los dems casos se resuelven recurriendo, antes o despus, a alguno (s) de los caso base. De esta forma, podemos resolver problemas complejos que serian muy difciles de resolver directamente.
Recursividad vs Iteracin
Aspectos que hay que considerar al decidir como implementar la solucin a un problema (de forma iterativa o de forma recursiva): -La carga computacional (tiempo de CPU y espacio en memoria) asociado a las llamadas recursivas. -La redundancia (algunas soluciones recursivas resuelven el mismo problema en repetidas ocasiones). -La complejidad de la solucin (en ocasiones, la solucin iterativa es muy difcil de encontrar). -La concisin, legibilidad y elegancia del cdigo resultante (la solucin recursiva del problema puede ser mas sencilla).
Ejemplo: versin mejorada del calculo de x static int potencia (int x, int n) { int aux; if (n==0) { return 1; } else { aux = potencia (x, n/2); if (n%2 == 0) return aux * aux; else return x * aux * aux; } }
LAS DEFINICIONES RECURSIVAS DE FUNCIONES EN MATEMTICAS Tienen como argumentos nmeros enteros, se llaman relaciones de recurrencia. Forma de una ecuacin de recurrencia: coar +c1ar-1 + c2ar-2 + ....+ ckar-k = f(r) Funcin matemtica discreta donde ci son constantes, es llamada una ecuacin de recurrencia de coeficientes constantes de orden k, condicionada a que c0 y ck = 0. Una definicin recursiva dice cmo obtener conceptos nuevos empleando el mismo concepto que intenta definir. El poder de la recursividad es que los procedimientos o conceptos complejos pueden expresarse de una forma simple. Un razonamiento recursivo tiene dos partes: la base y la regla recursiva de construccin. La base no es recursiva y es el punto tanto de partida como de terminacin de la definicin.
Ejemplo simple de recursividad: a) Clculo del factorial de un nmero, por ejemplo, 5. Descomposicin del problema: 5! = 5 * 4! 4! = 4 * 3! 3!= 3 * 2! 2! = 2 * 1! 1! = 1 * 0! Solucin conocida o directa 0! = 1 Resolucin de problemas mas complejos a partir de otros mas simples: 1! = 1*0! = 1 2! = 2*1! = 2 3! = 3*2! = 6 4! = 4*3! = 24 5! = 5*4! = 120
Ejemplos: Los nmeros naturales se pueden definir de la siguiente forma: 0 es un Nmero natural y el sucesor de un nmero natural es tambin un nmero natural. El factorial de un nmero natural n, es 1 si dicho nmero es 0, o n multiplicado por el factorial del nmero n-1, en caso contrario. La n-sima potencia de un nmero x, es 1 si n es igual a 0, o el producto de x por la potencia (n-1) n-sima de x, cuando n es mayor que 0.