SlideShare une entreprise Scribd logo
1  sur  4
ESTRUCTURAS DE DATOS




                               UNIDAD 4 RECURSIVIDAD
Un proceso es recursivo, si está definido total o parcialmente en términos de sí mismo. La
utilización de la recursividad es apropiada cuando el problema a resolver o los datos a tratar
han sido definidos de forma recursiva, aunque esto no garantiza que esta sea la mejor forma
de resolverlo.

La recursión es una alternativa a la iteración. Un proceso iterativo es aquel que requiere de la
expresión explicita de cierta acción.

De esta forma para calcular por ejemplo, el factorial de un número, se puede utilizar un
proceso iterativo o uno recursivo.

                              PRO CE DIM IE NTO S RE CU RSIVO S



Los tipos de procesos recursivos son los siguientes:

   a) Recursividad Simple o directa: Es aquella en cuya definición solo aparece una llamada
      recursiva. Se puede transformar con facilidad en algoritmo iterativo.

   b) Recursividad Múltiple: Se da cuando hay más de una llamada dentro del cuerpo de una
      función o método, resulta un poco más difícil transformar a un algoritmo en iterativo.
      Por ejemplo:

                int cuenta(int m)

               {

                   if (m==1) return 1;

                     return (cuenta(m-10)+cuenta(m-2));

               }

   c) Recursividad Anidada: Es aquella en donde en alguno de los argumentos de la llamada
      recursiva hay una nueva llamada así misma. Por ejemplo :

             public int ack (int n, int m)
             {
                     if(n==0) return(m+1)
                        else if(m==0)return(ack( n-1 ),1);
                          return(ack(n-1, ack(n,m-1)));
             }
   d) Recursividad Cruzada o indirecta: Son algoritmos donde una función o método
      provoca una llamada así mismo de forma indirecta a través de otras funciones o
      métodos. Por ejemplo:
             int par (int nump)
             {
                     if(nump==0) return 1;
                                                                                                   1
ESTRUCTURAS DE DATOS



                                 return (impar(nump-1));
                }



                int impar (int numi)
                {
                       if(numi==0)return 0;
                                return(par(numi-1));
                }

                                  ME CANICA DE RE CU RSIO N

Un algoritmo recursivo se debe distinguir por dos elementos:

    a) El caso base, trivial o de fin de recursión: Es un caso donde el problema puede
       resolverse sin tener que hacer uso de una nueva llamada así mismo. Evita la
       continuación indefinida de las partes recursivas.

    b) El caso general: Es el que relaciona el resultado del algoritmo con resultados de casos
       más simples. Se hacen nuevas llamadas a la función o método pero están más
       próximas al caso base.

Por ejemplo la definición de la factorial es recursiva, y se define así:

                      El factorial de 4 es: 4*3*2*1

                      El factorial de 0 es: 1

Matemáticamente tenemos:

                      0!=1;

                      1!=1;

                      2!=2*1;

                      3!=3*2*1;

                      4!=4*3*2*1;

Por lo que se tiene que:

                      0!=1;

                      1!=1*0!;

                      2!=2*1!;

                      3!=3*2!;

                      4!=4*3!;

El caso base es: Si N=0, N!=1.
                                                                                                 2
ESTRUCTURAS DE DATOS



El caso general es: Si N>0, N!=N*(N-1)!

La mecánica de la recursividad está basada en una pila. Cuando un método recursivo se está
ejecutando se crea en la memoria de la computadora una pila en donde se almacenan los
valores de los parámetros y de las variables locales del método, si este método retorna un
resultado este también se guarda en la pila.

Para cada llamada del método se almacenan en la pila los nuevos valores creándose un nuevo
¨registro de activación¨. De tal forma que la pila de recursión está formada por estos registros
de activación.

El código o método recursivo para el factorial es:

public int fact(int n)

{       if (n==0) return 1;

            else return n*fact(n-1);

}

            NIVEL DE RECURSION          PROCESO DE IDA         P R O C E S O D E V U EL T A
                     0                     FACT(4)                          24
                     1                    4*FACT(3)                         4*6
                     2                    3*FACT(2)                         3*2
                     3                    2*FACT(1)                         2*1
                     4                    1*FACT(0)                         1*1
                                           FACT(0)                           1




                                RECURSIVIDAD EN EL DISEÑO

En el diseño un algoritmo recursivo se debe de tener en cuenta lo siguiente:

a)   La recursividad puede ser de cualquier tipo simple, múltiple, anidada o cruzada.

b)   El instrumento necesario para expresar la recursividad es el método o función.

c)   Un método recursivo debe de disponer de una o varias instrucciones selectivas donde se
     establezca la condición o condiciones de salida, que representa el caso base.

d)   Cada llamada recursiva se debe aproximar al cumplimiento de las condiciones de salida,
     cada llamada recursiva representa el caso general.

e)   Cada vez que se llama al método los valores de los parámetros y variables locales serán
     almacenados en una pila.

f)   Durante las ejecuciones, parámetros y variables tomaran nuevos valores con los que
     trabajará el método.

g)   Cuando termina de ejecutarse el método, se retorna al nivel anterior recuperándose de la
     pila los valores tanto de parámetros como de variables locales continuando la ejecución
     con la instrucción siguiente a la llamada recursiva.
                                                                                               3
ESTRUCTURAS DE DATOS



                    VENTAJAS Y DESVENTAJAS DE LA RECURSIVIDAD

   1. Da solución a problemas de una manera natural, sencilla, comprensible y elegante.

   2. Presenta una facilidad para comprobar y verificar que la solución es correcta.

   3. En general las soluciones recursivas son más ineficientes en tiempo y en espacio que
      las versiones iterativas, esto es debido a las llamadas continuas a métodos, a la
      creación de variables dinámicas en la pila, y a la duplicación de variables por lo que la
      complejidad de los algoritmos recursivos tiende a ser muy alta.




                                                                                                  4

Contenu connexe

Tendances

conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y NodosBoris Salleg
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacionLuis Igoodbad
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda HashBlanca Parra
 
Ejercicio busqueda costo_uniforme_y_avara_mapa_rumania
Ejercicio busqueda costo_uniforme_y_avara_mapa_rumaniaEjercicio busqueda costo_uniforme_y_avara_mapa_rumania
Ejercicio busqueda costo_uniforme_y_avara_mapa_rumaniaByron Rodriguez
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasknowallrpa
 
Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Convertir Diagrama Entidad-Relacion a Modelo Relacional.Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Convertir Diagrama Entidad-Relacion a Modelo Relacional.Erivan Martinez Ovando
 
Eliminar elementos de una cola
Eliminar elementos de una colaEliminar elementos de una cola
Eliminar elementos de una colajeffersoncenteno
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 

Tendances (20)

conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y Nodos
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Ordenamiento parte 2
Ordenamiento parte 2Ordenamiento parte 2
Ordenamiento parte 2
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Listas
ListasListas
Listas
 
Metodo de busqueda
Metodo de busquedaMetodo de busqueda
Metodo de busqueda
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Ejercicio busqueda costo_uniforme_y_avara_mapa_rumania
Ejercicio busqueda costo_uniforme_y_avara_mapa_rumaniaEjercicio busqueda costo_uniforme_y_avara_mapa_rumania
Ejercicio busqueda costo_uniforme_y_avara_mapa_rumania
 
Colas
ColasColas
Colas
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Convertir Diagrama Entidad-Relacion a Modelo Relacional.Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Convertir Diagrama Entidad-Relacion a Modelo Relacional.
 
Eliminar elementos de una cola
Eliminar elementos de una colaEliminar elementos de una cola
Eliminar elementos de una cola
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 

Similaire à Unidad 4 est. dat. recursividad (20)

03 tda1 t2018
03 tda1 t201803 tda1 t2018
03 tda1 t2018
 
recursividad.pptx
recursividad.pptxrecursividad.pptx
recursividad.pptx
 
recursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptxrecursividad EN PROGRAMACION ORIENTADA .pptx
recursividad EN PROGRAMACION ORIENTADA .pptx
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad.pdf
Recursividad.pdfRecursividad.pdf
Recursividad.pdf
 
Metodologia de la programacion recursividad
Metodologia de la programacion   recursividadMetodologia de la programacion   recursividad
Metodologia de la programacion recursividad
 
Catalan
CatalanCatalan
Catalan
 
Recursividad 100329105433-phpapp01
Recursividad 100329105433-phpapp01Recursividad 100329105433-phpapp01
Recursividad 100329105433-phpapp01
 
Funciones recursivas
Funciones recursivasFunciones recursivas
Funciones recursivas
 
2. Recursividad
2. Recursividad2. Recursividad
2. Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
Modulo4
Modulo4Modulo4
Modulo4
 
Algoritmos recursivos
Algoritmos recursivosAlgoritmos recursivos
Algoritmos recursivos
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
2.1 recursividad
2.1 recursividad2.1 recursividad
2.1 recursividad
 
Algoritmos y Estructura de Datos
Algoritmos y Estructura de DatosAlgoritmos y Estructura de Datos
Algoritmos y Estructura de Datos
 
2 algoritmos-1
2 algoritmos-12 algoritmos-1
2 algoritmos-1
 

Plus de rehoscript

Practicas oracle10g
Practicas oracle10gPracticas oracle10g
Practicas oracle10grehoscript
 
Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807rehoscript
 
Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedarehoscript
 
Unidad 6 ordenacion_interna
Unidad 6 ordenacion_internaUnidad 6 ordenacion_interna
Unidad 6 ordenacion_internarehoscript
 
Unidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no linealUnidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no linealrehoscript
 
Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasrehoscript
 
Unidad 2 Manejo de memoria
Unidad 2 Manejo de memoriaUnidad 2 Manejo de memoria
Unidad 2 Manejo de memoriarehoscript
 
Unidad 7 ordenacion_externa
Unidad 7 ordenacion_externaUnidad 7 ordenacion_externa
Unidad 7 ordenacion_externarehoscript
 
Analisis de algoritmos
Analisis de algoritmosAnalisis de algoritmos
Analisis de algoritmosrehoscript
 
Lenguajes Decidibles
Lenguajes DecidiblesLenguajes Decidibles
Lenguajes Decidiblesrehoscript
 
Programación
 Programación Programación
Programaciónrehoscript
 
Reseña y ensayo
Reseña y ensayoReseña y ensayo
Reseña y ensayorehoscript
 
Protocolo de investigacion
Protocolo de investigacionProtocolo de investigacion
Protocolo de investigacionrehoscript
 
Tipos de entrevista
Tipos de entrevistaTipos de entrevista
Tipos de entrevistarehoscript
 
Investigacion documental
Investigacion documentalInvestigacion documental
Investigacion documentalrehoscript
 
Maquinas Virtuales
Maquinas VirtualesMaquinas Virtuales
Maquinas Virtualesrehoscript
 
Arquitectura P2P
Arquitectura P2PArquitectura P2P
Arquitectura P2Prehoscript
 
Arquitectura dirigida a eventos
Arquitectura dirigida a eventosArquitectura dirigida a eventos
Arquitectura dirigida a eventosrehoscript
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositóriorehoscript
 

Plus de rehoscript (20)

Practicas oracle10g
Practicas oracle10gPracticas oracle10g
Practicas oracle10g
 
Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807
 
Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busqueda
 
Unidad 6 ordenacion_interna
Unidad 6 ordenacion_internaUnidad 6 ordenacion_interna
Unidad 6 ordenacion_interna
 
Unidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no linealUnidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no lineal
 
Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicas
 
Unidad 2 Manejo de memoria
Unidad 2 Manejo de memoriaUnidad 2 Manejo de memoria
Unidad 2 Manejo de memoria
 
Unidad 7 ordenacion_externa
Unidad 7 ordenacion_externaUnidad 7 ordenacion_externa
Unidad 7 ordenacion_externa
 
Analisis de algoritmos
Analisis de algoritmosAnalisis de algoritmos
Analisis de algoritmos
 
Lenguajes Decidibles
Lenguajes DecidiblesLenguajes Decidibles
Lenguajes Decidibles
 
Claselexico
ClaselexicoClaselexico
Claselexico
 
Programación
 Programación Programación
Programación
 
Reseña y ensayo
Reseña y ensayoReseña y ensayo
Reseña y ensayo
 
Protocolo de investigacion
Protocolo de investigacionProtocolo de investigacion
Protocolo de investigacion
 
Tipos de entrevista
Tipos de entrevistaTipos de entrevista
Tipos de entrevista
 
Investigacion documental
Investigacion documentalInvestigacion documental
Investigacion documental
 
Maquinas Virtuales
Maquinas VirtualesMaquinas Virtuales
Maquinas Virtuales
 
Arquitectura P2P
Arquitectura P2PArquitectura P2P
Arquitectura P2P
 
Arquitectura dirigida a eventos
Arquitectura dirigida a eventosArquitectura dirigida a eventos
Arquitectura dirigida a eventos
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositório
 

Unidad 4 est. dat. recursividad

  • 1. ESTRUCTURAS DE DATOS UNIDAD 4 RECURSIVIDAD Un proceso es recursivo, si está definido total o parcialmente en términos de sí mismo. La utilización de la recursividad es apropiada cuando el problema a resolver o los datos a tratar han sido definidos de forma recursiva, aunque esto no garantiza que esta sea la mejor forma de resolverlo. La recursión es una alternativa a la iteración. Un proceso iterativo es aquel que requiere de la expresión explicita de cierta acción. De esta forma para calcular por ejemplo, el factorial de un número, se puede utilizar un proceso iterativo o uno recursivo. PRO CE DIM IE NTO S RE CU RSIVO S Los tipos de procesos recursivos son los siguientes: a) Recursividad Simple o directa: Es aquella en cuya definición solo aparece una llamada recursiva. Se puede transformar con facilidad en algoritmo iterativo. b) Recursividad Múltiple: Se da cuando hay más de una llamada dentro del cuerpo de una función o método, resulta un poco más difícil transformar a un algoritmo en iterativo. Por ejemplo: int cuenta(int m) { if (m==1) return 1; return (cuenta(m-10)+cuenta(m-2)); } c) Recursividad Anidada: Es aquella en donde en alguno de los argumentos de la llamada recursiva hay una nueva llamada así misma. Por ejemplo : public int ack (int n, int m) { if(n==0) return(m+1) else if(m==0)return(ack( n-1 ),1); return(ack(n-1, ack(n,m-1))); } d) Recursividad Cruzada o indirecta: Son algoritmos donde una función o método provoca una llamada así mismo de forma indirecta a través de otras funciones o métodos. Por ejemplo: int par (int nump) { if(nump==0) return 1; 1
  • 2. ESTRUCTURAS DE DATOS return (impar(nump-1)); } int impar (int numi) { if(numi==0)return 0; return(par(numi-1)); } ME CANICA DE RE CU RSIO N Un algoritmo recursivo se debe distinguir por dos elementos: a) El caso base, trivial o de fin de recursión: Es un caso donde el problema puede resolverse sin tener que hacer uso de una nueva llamada así mismo. Evita la continuación indefinida de las partes recursivas. b) El caso general: Es el que relaciona el resultado del algoritmo con resultados de casos más simples. Se hacen nuevas llamadas a la función o método pero están más próximas al caso base. Por ejemplo la definición de la factorial es recursiva, y se define así: El factorial de 4 es: 4*3*2*1 El factorial de 0 es: 1 Matemáticamente tenemos: 0!=1; 1!=1; 2!=2*1; 3!=3*2*1; 4!=4*3*2*1; Por lo que se tiene que: 0!=1; 1!=1*0!; 2!=2*1!; 3!=3*2!; 4!=4*3!; El caso base es: Si N=0, N!=1. 2
  • 3. ESTRUCTURAS DE DATOS El caso general es: Si N>0, N!=N*(N-1)! La mecánica de la recursividad está basada en una pila. Cuando un método recursivo se está ejecutando se crea en la memoria de la computadora una pila en donde se almacenan los valores de los parámetros y de las variables locales del método, si este método retorna un resultado este también se guarda en la pila. Para cada llamada del método se almacenan en la pila los nuevos valores creándose un nuevo ¨registro de activación¨. De tal forma que la pila de recursión está formada por estos registros de activación. El código o método recursivo para el factorial es: public int fact(int n) { if (n==0) return 1; else return n*fact(n-1); } NIVEL DE RECURSION PROCESO DE IDA P R O C E S O D E V U EL T A 0 FACT(4) 24 1 4*FACT(3) 4*6 2 3*FACT(2) 3*2 3 2*FACT(1) 2*1 4 1*FACT(0) 1*1 FACT(0) 1 RECURSIVIDAD EN EL DISEÑO En el diseño un algoritmo recursivo se debe de tener en cuenta lo siguiente: a) La recursividad puede ser de cualquier tipo simple, múltiple, anidada o cruzada. b) El instrumento necesario para expresar la recursividad es el método o función. c) Un método recursivo debe de disponer de una o varias instrucciones selectivas donde se establezca la condición o condiciones de salida, que representa el caso base. d) Cada llamada recursiva se debe aproximar al cumplimiento de las condiciones de salida, cada llamada recursiva representa el caso general. e) Cada vez que se llama al método los valores de los parámetros y variables locales serán almacenados en una pila. f) Durante las ejecuciones, parámetros y variables tomaran nuevos valores con los que trabajará el método. g) Cuando termina de ejecutarse el método, se retorna al nivel anterior recuperándose de la pila los valores tanto de parámetros como de variables locales continuando la ejecución con la instrucción siguiente a la llamada recursiva. 3
  • 4. ESTRUCTURAS DE DATOS VENTAJAS Y DESVENTAJAS DE LA RECURSIVIDAD 1. Da solución a problemas de una manera natural, sencilla, comprensible y elegante. 2. Presenta una facilidad para comprobar y verificar que la solución es correcta. 3. En general las soluciones recursivas son más ineficientes en tiempo y en espacio que las versiones iterativas, esto es debido a las llamadas continuas a métodos, a la creación de variables dinámicas en la pila, y a la duplicación de variables por lo que la complejidad de los algoritmos recursivos tiende a ser muy alta. 4