Recursividad 1 Análisis de algoritmos. Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más.

Slides:



Advertisements
Presentaciones similares
ESTRUCTURA DE DATOS Unidad 01 RECURSIVIDAD.
Advertisements

Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
Programación II Recursividad
Recursión Se dice que un método es recursivo si forma parte de sí mismo o se define en función de sí mismo. La recursión es un medio particularmente poderoso.
2.1 Recursividad El hecho de que una función pueda llamarse a sí misma.
Programación I Teoría VI: Recursividad
Fundamentos de programación

Introducción al análisis de algoritmos
Material de apoyo Unidad 4 Estructura de datos
Análisis de algoritmos
Recursividad Un objeto se dice que es recursivo si él mismo forma parte de su definición. Ejemplos de objetos recursivos: Una locomotora es un tren Un.
Programación I Técnico Universitario en Web Dpto. de Informática FCFMyN - UNSL -10-
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Ing. Betty Suárez Torres
Unidad V Recursión. Objetivos del Aprendizaje Explicar el concepto de recursión. Discutir las diferentes condiciones que deben ser satisfechas para que.
Conalep Coacalco Algoritmos Recursivos
Recursividad.
Análisis de los algoritmos Unidad 7. Análisis La resolución práctica de un problema – algoritmo o método de resolución – y por otra un programa o codificación.
 El producto de dos fracciones es otra fracción cuyo numerador es el producto de los numeradores, y cuyo denominador es el producto de los denominadores,
MÉTODO CONGRUENCIALES David Chacón. Método Congruenciales Se han desarrollado básicamente tres métodos de congruenciales para generar números pseudoaleatorios,
La distribución binomial se utiliza en situaciones cuya solución tiene dos posibles resultados.distribución binomial Por ejemplo: Al nacer un/a bebé puede.
Unidad 1: Conceptos fundamentales Instituto Tecnológico de Toluca Ing. Sistemas Computacionales Asignatura: Programación Lógica y Funcional Presentan Nieto.
TUTORIA 1 Lógica para la Computación TUTORIA 1 Facultad de Ciencias Naturales y Matemáticas.
ADRIANA MILENA ÁVILA REYES LICENCIATURA EN MATEMÁTICAS.
Ingreso , proceso y salida de datos
Estructuras de Control.
Funciones. Recursividad
Funciones Racionales.
Formas de Desisión Operadores lógicos II.
Optimización: Programación Lineal
Programación 1 Curso: 5to. I TT
Funciones Potencias, exponenciales y logarítmicas.
El conjunto de los números naturales
Programación Orientada a Objetos
RECURSIVIDAD.
La operación inversa de la potenciación
Estructuras de Datos Recursividad.
Figure: Algoritmos.
CREAR DIAGRAMA DE FLUJO
2.2 Procedimientos recursivos
ALGORITMOS. IFE 115: INFORMÁTICA BÁSICA Lic. Marcio Rodas
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
ANÁLISIS MATEMÁTICO INECUACIONES
LÓGICA DE PROGRAMACIÓN
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
SISTEMA DE NUMEROS NÚMEROS ENTEROS DIVISIBILIDAD NÚMEROS PRIMOS
METODO DE LA GRAN M SANDRA PAOLA FORERO JHON SEBASTIAN GUATAVITA
IFE 115: INFORMÁTICA BÁSICA
Estructuras de control Resolución de problemas y algoritmos
UNIDAD 0105: SUCESIONES Y SERIES
FunciÓn PotenciaL, exponencial y logarÍtmica.
TEMA Nº 1 Conjuntos numéricos. Aprendizajes esperados: Utilizar y clasificar los distintos conjuntos numéricos en sus diversas formas de expresión, tanto.
Programación: paradigma estructurado Mgs Christian Rosado.
HERRAMIENTAS DE PROGRAMACIÓN
Conjuntos numéricos. objetivos: Utilizar y clasificar los distintos conjuntos numéricos en sus diversas formas de expresión. recordar la operatoria básica.
Estructuras de Repetición Pseudocodigo1 Estructuras de Repetición Algoritmos Mientras Hacer-Mientras Para.
INFORMÁTICA II BLOQUE I: ALGORITMOS Y DIAGRAMAS DE FLUJO
Recursividad Estructura de datos 2005.
Docente: Ing. Francisco Rodríguez
INTRODUCCIÓN A LA PROGRAMACIÓN ABRAHAM SOPLA MASLUCÁN MAESTRO EN CIENCIAS DE LA COMPUTACIÓN INSTITUTO TECNOLÓGICO DE MONTERREY.
MC Beatriz Beltrán Martínez Verano 2018
Estructuras de Repetición Algoritmos
Ejemplo 1: Sea la sucesión de enteros b 0, b 1, b 2, b 3, b 4, b 5, ……. donde b n = 2n para todo N Entonces tenemos: b 0 = 2*0 = 0 b 1 = 2*1 = 1 b 2 =
ProcesadorNumero PROBLEMA 1 (Laboratorio N°1)
TEMA Nº 1 Conjuntos numéricos. Aprendizajes esperados: Utilizar y clasificar los distintos conjuntos numéricos en sus diversas formas de expresión, tanto.
Marta Rosas Cancio. Re-escribe la ecuación sin los valores absolutos Si c es un entero positivo y X representa cualquier expresión algebraica, entonces.
Diseñas y elaboras algoritmos para la solución de problemas
Estrategia algorítmica
Recursividad.
Transcripción de la presentación:

Recursividad 1 Análisis de algoritmos

Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Ésta muñeca, también contiene otra muñeca dentro. Y así, una dentro de otra. 2

Recursividad: el concepto La recursividad es un concepto fundamental en matemáticas y en computación. Es una alternativa diferente para implementar estructuras de repetición (ciclos). Los módulos se hacen llamadas recursivas. Se puede usar en toda situación en la cual la solución pueda ser expresada como una secuencia de movimientos, pasos o transformaciones gobernadas por un conjunto de reglas no ambiguas. 3

Función recursiva Las funciones recursivas se componen de: Caso base: una solución simple para un caso particular (puede haber más de un caso base). 4

Función recursiva Caso recursivo: una solución que involucra volver a utilizar la función original, con parámetros que se acercan más al caso base. Los pasos que sigue el caso recursivo son los siguientes: 1.El procedimiento se llama a s í mismo 2.El problema se resuelve, tratando 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 á 5

Ejemplo: factorial Escribe un programa que calcule el factorial (!) de un entero no negativo. He aquí algunos ejemplos de factoriales: 1! = 1 2! = 2  2 * 1 3! = 6  3 * 2 * 1 4! = 24  4 * 3 * 2 * 1 5! = 120  5 * 4 * 3 * 2 * 1 6

Ejemplo: factorial (iterativo - repetetitivo) public int factorial (int n) { int fact = 1; for (int i = 1; i <= n; i++) fact = i * fact; return fact; } 7 int factorial (int n) comienza fact  1 para i  1 hasta n fact  i * fact regresa fact termina

Ejemplo: factorial (recursivo) int factorial (int n) comienza si n = 0 entonces regresa 1 otro regresa factorial (n-1)*n termina public int factorial (int n) { if n == 0 return 1; else return factorial (n-1) * n; } 8

9 Ejemplo: A continuación se puede ver la secuencia de factoriales.  0! = 1  1! = 1  2! = 2  3! = 6  4! = 24  5! = 120 ...  N! = = 1 * 1 = 1 * 0! = 2 * 1 = 2 * 1! = 3 * 2 * 1= 3 * 2! = 4 * 3 * 2 * 1 = 4 * 3! = 5 * 4 * 3 * 2 * 1 = 5 * 4! = N * (N – 1)!

Aquí podemos ver la secuencia que toma el factorial 1 si N = 0 (base) N ! = N * (N – 1) ! si N > 0 (recursión) Un razonamiento recursivo tiene dos partes: la base y la regla recursiva de construcción. La base no es recursiva y es el punto tanto de partida como de terminación de la definición. 10 Solución

Solución Recursiva Dado un entero no negativo x, regresar el factorial de x fact: Entrada n entero no negativo, Salida:entero. int fact (int n) { if (n == 0) return 1; else return fact(n – 1) * n ; } 11 Es importante determinar un caso base, es decir un punto en el cual existe una condición por la cual no se requiera volver a llamar a la misma función.

¿Cómo funciona la recursividad? 12 Llamadas recursivas Resultados de las llamadas recursivas

¿Cómo funciona la recursividad? 13

¿Por qué escribir programas recursivos? Son mas cercanos a la descripción matemática. Generalmente mas fáciles de analizar Se adaptan mejor a las estructuras de datos recursivas. Los algoritmos recursivos ofrecen soluciones estructuradas, modulares y elegantemente simples. 14

Factible de utilizar recursividad Para simplificar el código. Cuando la estructura de datos es recursiva ejemplo : árboles. Cuando los métodos usen arreglos largos. Cuando el método cambia de manera impredecible de campos. Cuando las iteraciones sean la mejor opción. 15 No factible utilizar recursividad

Otros conceptos Cuando un procedimiento incluye una llamada a sí mismo se conoce como recursi ó n directa. Cuando un procedimiento llama a otro procedimiento y é ste causa que el procedimiento original sea invocado, se conoce como recursi ó n indirecta. 16

Ejemplo: Serie de Fibonacci Valores: 0, 1, 1, 2, 3, 5, 8... Cada término de la serie suma los 2 anteriores. Fórmula recursiva fib(n) = fib (n - 1) + fib (n - 2 ) Caso base: Fib (0)=0; Fib (1)=1 Caso recursivo: Fib (i) = Fib (i -1) + Fib(i -2) public static int fib(int n){ if (n <= 1) return n; //condición base else return fib(n-1)+fib(n-2); //condición recursiva } 17

Ejemplo: Serie de Fibonacci Traza del cálculo recursivo 18 Fib(1) return Fib(3) Fib(2) + return 1 Fib(0) return Fib(1) + return 1return 0

19

Recursión vs iteración Repetición Iteración: ciclo explícito (se expresa claramente) Recursión: repetidas invocaciones a método Terminación Iteración: el ciclo termina o la condición del ciclo falla Recursión: se reconoce el caso base En ambos casos podemos tener ciclos infinitos Considerar que resulta más positivo para cada problema LA RECURSIVIDAD SE DEBE USAR CUANDO SEA REALMENTE NECESARIA, ES DECIR, CUANDO NO EXISTA UNA SOLUCIÓN ITERATIVA SIMPLE. 20

Muchas veces es posible dividir un problema en subproblemas m á s peque ñ os, generalmente del mismo tama ñ o, resolver los subproblemas y entonces combinar sus soluciones para obtener la soluci ó n del problema original. Dividir para vencer es una t é cnica natural para las estructuras de datos, ya que por definici ó n est á n compuestas por piezas. Cuando una estructura de tama ñ o finito se divide, las ú ltimas piezas ya no podr á n ser divididas. 21 Dividir para vencer