RECURSIVIDAD. Prof. Ing. M.Sc. Fulbia Torres

Documentos relacionados
Tema: Funciones, Procedimientos y Recursividad en C#.

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Recursión. Capítulo 4

Funciones Tipos de funciones y Recursividad

TEMA 5: Subprogramas, programación modular

PROGRAMACION MODULAR FUNCIONES

Tema 7: Recursividad

Funciones y paquetes PL/SQL. Jonathan Medina Gómez Facultad de ingeniería Universidad de Antioquia

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad

Estructuración del programa en partes más pequeñas y sencillas

Estructuras de Repetición (Hacer-Mientras)

4.- Leer tres números y escribirlos en orden decreciente

RECURRENCIA RECURSIÓN o RECURSIVIDAD

Ejercicios Tema 6. Funciones

Si un número es múltiplo de otro, u dicho de forma, comprobar si un número es divisor de otro.

Estructuras de Repetición (Repita para)

Tema 5.- Recursividad

Semana de las Matemáticas e Ingeniería. Desarrollo de algoritmos recursivos empleando la aplicación PseInt

Concepto de Recursión. Características de algoritmos recursivos. Ejemplos

Ejercicios sobre recursividad

7.3. Estructura de un programa

Tema 3. Patrones y Definiciones de Funciones

Presentación. Programación I. Conceptos Avanzados de Programación. :: Prof. Yeniffer Peña

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

Funciones como Subprogramas en C++

Lenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Algoritmos glotones. mat-151

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Paso de Parámetros a una Función

Estructuras de Decisión Simples y Dobles

Fundamentos de Informática

Programación Dinámica 1

Programación Dinámica

int int. 1622

Trabajo Práctico N 9 Recursividad

Universidad Autónoma del Estado de México Facultad de Medicina

Tema 6: Generación de código (parte 2)

mientras (while-condicion-end)

Esquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q

2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 SUMA

Carlos A. Rivera-Morales. Precálculo 2

Funciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina.

8. Sentencia return y métodos

UAA Sistemas Electrónicos Estructura de Datos Muñoz / Serna

MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6

UNIVERSIDAD NACIONAL DE SALTA Sede Regional Orán AÑO: 2013 Carreras: TIG - TUP

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Tema 3. Patrones y Definiciones de Funciones

Bloque 4. La descomposición funcional y el diseño descendente

UNIDAD V: ESTRUCTURAS REPETITIVAS

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

RADIO =? R AREA = : πr 2 < CIRC = : 2 πr

CI 2125, Computación I

Guía práctica de estudio 05: Diagramas de flujo

Sentencias de Procesamiento Iterativo: while y do-while

Propiedades de números enteros (lista de problemas para examen)

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3

Algoritmos. Intro. Prof. Raquel Torres Peralta / Gerardo Sanchez S. Unison

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Recursión Directa. Una función es de recursión directa si contiene una llamada explícita a si misma. return foo (y 1); Recursión Indirecta

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

Inteligencia Artificial: Prolog

ESTRUCTURAS REPETITIVAS

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

a) Si ch tiene el valor X y numero el valor 5, cuál sería el efecto de ejecutar cada una de las siguientes llamadas al procedimiento:

Introducción a la programación en C eme - Escuela Universitaria de Música

Programación I: Funciones y módulos

ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE

Fundamentos de Programación. Flujo de Control I: Estructuras selectivas

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

PREINFORME 3 PERIODO DIRECCIÓN MEDIA VOCACIONAL

Programación Orientada a Objetos Métodos Guía de Ejercicios v9.7

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Universidad Nacional del Santa FACULTAD DE INGENIERIA E.A.P de Ingeniería de Sistemas e Informática NETBEANS 7.0

Esquemas algorítmicos de un nivel

Actividad colaborativa Ejercicios de programación Programación básica C++

Para las ecuaciones diferenciales ordinarias no lineales no existen métodos generales.

Guía práctica de estudio 03: Algoritmos

Algoritmos de Búsqueda y Ordenamiento

Metodología y Tecnología de la Programación

FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información. Ejercicios de recursividad

Estatutos de Control C# Estatutos de Decisión (Selección)

Problemas de Recursividad

Tema I Testing Estructurado

D L M M J V S

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Resolución de problemas mediante algoritmos

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Funciones. Parámetros por valor

CAPÍTULO 6 PROGRAMACIÓN DINÁMICA. Programación Dinámica

Algoritmos: Análisis de Algoritmos

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

El concepto de función en programación se fundamenta en el concepto de función matemática 1

PROBLEMAS DEL TEMA 5: Control de Flujo del Programa

7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico.

SUBPROGRAMAS FUNCIONES

Transcripción:

ESTRUCTURAS DE DATOS 2006 Prof.

UNIDAD II ESTRUCTURAS DE DATOS RECURSIVIDAD Definición. Estado base. Estado general. Ejemplos. Ejercicios.

DEFINICIÓN Es una técnica de programación muy potente que permite definir un objeto (problemas, estructuras de datos) en términos de si mismo.

DEFINICIÓN Ejemplo: Un subprograma que se llame a si mismo se dice que es recursivo. En estos se dan de dos maneras: DIRECTO: El subprograma se llama directamente a si mismo. Subprograma P Instrucción 1 Instrucción 2 Instrucción 3 Llamada a P

DEFINICIÓN INDIRECTA: El subprograma llama a otro subprograma y éste a su vez llama al primero. Subprograma P Llamada a Q Subprograma Q Llamada a V Subprograma V Se ejecuta termina

En toda definición recursiva de un problema se debe establecer lo siguiente: Estado Base: un estado en el cual la solución no se presenta de manera recursiva sino directamente. Además la entrada (datos) del problema debe ir acercándose al estado básico. Este estado se denomina salida de la recursión, y es necesario que exista por lo menos una dentro de cada rutina recursiva, para garantizar que el proceso termina. Estado General: llamada recursiva, y también es necesaria la presencia de al menos uno de éstos en toda rutina recursiva.

Metodología de desarrollo Buscar las salidas de la recursión: en que casos o bajo qué circustancias se puede dar una respuesta inmediata al problema planteado. Determinar los avances de la recursión: en que casos se debe plantear la respuesta en términos de una llamada recursiva. Para esto es conveniente: Identificar los casos posibles, Definir que significa un problema con la misma estructura pero menor tamaño y plantear la llamada recursiva, y Explicar en cada caso la manera de construir la respuesta a partir del retorno de dicha llamada. Escribir el algoritmo que implementa el planteamiento antes logrado.

El factorial de un número entero positivo n se define como el producto de los números comprendidos entre 1 y n, la expresión n! simboliza el factorial de n. Escribir una función recursiva para encontrar el factorial de un número n. Hacer el análisis y el planteamiento del problema.

0! = 1 4! = 4(4 1) = 4 * 3! 1! = 1 3! = 3(3 1) = 3 * 2! 2! = 2 * 1 2! = 2(2 1) = 2 * 1! 31 = 3 * 2 * 1 1! = 1 4! = 4 * 3 * 2 * 1 llamadas recursivas. 2! = 2 * 1! = 2 * 1 = 2. 3! = 3 * 2! = 3 * 2 = 6 n! = n(n 1)! 4! = 4 * 3! = 4 * 6 = 24

Análisis: Entradas: entero n. Salidas: factorial de n. Planteamiento: Fact (n) 1 si n=0 o n=1 Estado Base n * Fact(n 1) si n > 1 Estado General

int Fact ( int n ) { If (n == 0 n == 1) return 1; else return (n * Fact(n 1)); }

Gráficamente: Fact (4) = 24 4 * Fact(3) = 24 4 * 6 6 3 * Fact(2) = 6 3 * 2 2 2 * Fact(1) = 2 2 * 1 1 1 * Fact (0) = 1 1 * 1 1 1

Escribir una función recursiva para encontrar la suma de los enteros pares hasta N. Suma pares = 2+4+..+(N-2)+N. Hacer el análisis y el planteamiento del problema.

Análisis: Entradas: entero par N. Salidas: suma de los enteros pares hasta N. Planteamiento: 2 + 4 + 6 + 8 +...+(N - 2) + N Sumapares(N) N si N=2 Estado Base N + sumapares(n-2) si N > 2 Estado General.

int sumapares ( int N ) { If (N == 2) return (N); else if (N > 2) if (N % 2 == 0) return (N + asumapares(n-2)); else exit (1); }

Corrida gráfica: N=8 sumapares(8) = 8 + sumapares(6) sumapares(6) = 6 + sumapares(4) sumapares(4) = 4 + sumapares(2) sumapares(2) = 2

Escribir una función recursiva para calcular cuantas combinaciones de tamaño Miembros pueden hacerse del tamaño total Grupo C: número total de combinaciones Grupo: tamaño total del grupo del que elegir Miembros: tamaño de cada subgrupo Grupo>=Miembros Hacer el análisis y el planteamiento del problema.

Análisis: Entradas: Grupo, Miembros. Salidas: Combinaciones. Planteamiento: Grupo si Miembros==1 ESTADO BASE C(Grupo,Miembros) 1 si Miembros==Grupo. C(Grupo-1,Miembros-1)+C(Grupo-1,Miembros) si Grupo>Miembros>1 ESTADO GENERAL

ALGORITMO EN Comb(EN Grupo, Miembros) VAR EN cmb INICIO SI Miembros == 1 ENTONCES cmb = Grupo (*Caso Base 1*) SINO SI Miembros == Grupo ENTONCES cmb = 1 (*Caso Base 2*) SINO (*Caso General*) cmb = Comb(Grupo-1,Miembros-1) + Comb(Grupo-1,Miembros) DEVOLVER cmb FIN. Llamada : Escribir( Número de combinaciones=, Comb(20,5))

int Comb(int Grupo, Miembros) { int cmb; If (Miembros == 1) cmb = Grupo (*Caso Base 1*) else if (Miembros == Grupo) cmb = 1 (*Caso Base 2*) else (*Caso General*) cmb = Comb(Grupo-1,Miembros-1) + Comb(Grupo-1,Miembros) return (cmb); }

Seguimiento Comb(4,3) Comb(4,3) Comb(3,2) + Comb(3,3) Comb(2,1) + Comb(2,2) 1 2 + 1 + 1 =4

GRACIAS POR SU ATENCIÓN HASTA LA PRÓXIMA CLASE