130 likes | 536 Views
2.1 Recursividad . El hecho de que una función pueda llamarse a sí misma. Una acción es recursiva cuando se define en función de sí misma. Las estructuras de datos recursivas sirven para construir estructuras dinámicas y complejas tales como las pilas, árboles y grafos.
E N D
2.1 Recursividad El hecho de que una función pueda llamarse a sí misma
Una acción es recursiva cuando se define en función de sí misma. Las estructuras de datos recursivas sirven para construir estructuras dinámicas y complejas tales como las pilas, árboles y grafos.
Definición: Un algoritmo se dice que es recursivo cuando contiene en su definición una o más llamadas a si mismo. Todo algoritmo recursivo tendrá al menos una instrucción alternativa que contemplará dos casos bien diferenciados: Caso directo (o caso base): Es el caso en el cual el problema tiene una solución directa. Es el último caso que se ejecuta en la recursión. Caso recursivo: Es donde se relaciona el resultado del algoritmo con resultados de casos más simples. Estos casos más simples corresponderán con las llamadas recursivas. La condición de la instrucción alternativa que selecciona el caso directo se denomina condición de parada.
Ejemplo: Función factorial • function factorial ($natural) { • // This guarantees that the function will return 1 (even with 0 as argument) • $result = 1; • if ($natural > 0) { • // Here we're applying the second formula: n * (n - 1)! • $result = $natural * factorial(($natural - 1)); • } • // return the acumulated result • return $result; • } • Ejecutar Factoriales.class
El proceso de ejecución de un subprograma recursivo consiste en una cadena de generación de llamadas (suspendiéndose los restantes cálculos) y reanudación de los mismos al término de la ejecución de las llamadas
El concepto de recursión aparece en varias situaciones de la vida cotidiana, aunque en muchas no sabemos que estamos en presencia de este concepto, por ejemplo, sacar fotocopias de fotocopias, tomar una fotografía a otra fotografía • Un razonamiento recursivo tiene dos partes: • La base. No es recursiva y es el punto tanto de partida como de terminación de la definición • La regla recursiva de construcción.
Entonces: Base: La secuenciación, iteración condicional y selección son estructuras válidas de control que pueden ser consideradas como enunciados. Regla recursiva: Las estructuras de control que se pueden formar combinando de manera válida la secuenciación iteración condicional y selección también son válidos. Un conjunto de objetos está definido recursivamente siempre que: (B) algunos elementos del conjunto se especifican explícitamente (R) el resto de los elementos del conjunto se definen en términos de los elementos ya definidos, donde (B) se llama base (R) se llama cláusula recursiva
Observaciones: 1. El procedimiento se llama a si mismo 2. El problema se resuelve, resolviendo el mismo problema pero de tamaño menor 3. La manera en la cual el tamaño del problema disminuye asegura que el caso base eventualmente se alcanzará. Aplicaciones La recursividad es un método poderoso usado en inteligencia artificial, su poder es que algunos conceptos complejos pueden expresarse en una forma simple. Las fórmulas recursivas pueden aplicarse a situaciones tales como prueba de teoremas, solución de problemas combinatorios, algunos acertijos, etc.
Cuando la definición de un subprograma sólo contiene una llamada recursiva, entonces se dice que la recursividad es lineal. Si es mas de una llamada recursiva, entonces se dice que la recursividad es múltiple.