SlideShare una empresa de Scribd logo
1 de 23
1
PROGRAMACIÓN I
UNIDAD 2:
RECURSIVIDAD Y MANEJO DE ESTRUCTURAS
2
CONTENIDO
• Funciones recursivas
• Tipos de datos abstractos.
• Enumeraciones, Uniones
• Estructuras: definición, declaración, acceso a elementos.
• Arreglos dentro de una estructura.
• Arreglos de estructuras.
• Paso de estructuras como parámetros
• Estructuras anidadas.
• Miembro recursivo de una estructura
3
4
ALGORITMOS Y RECURSIVIDAD
• Un procedimiento o función recursiva es aquella
que se llama a si misma.
– La ejecución del proceso recursivo se repite con valores
(parámetros) diferentes.
• La recursividad es una alternativa a la iteración
muy elegante en la resolución de problemas de
naturaleza recursiva. Permite especificar una
solución simple y natural para resolver problemas
definidos en términos de sí mismos.
– Ejemplo: Los números naturales
• 0 es un número Natural
• El siguiente número de un número natural es otro nro natural
5
• La recursividad está relacionada con el principio de
inducción.
– Existe un caso base, en el que no existe ninguna llamada
recursiva.(Condición o criterio base)
– Existe un caso general conocido como caso inductivo, en las
que se realizan llamadas a versiones de la misma función con
parámetros diferentes que conducen al caso base.
• Por lo tanto
– Hay que incluir por lo menos un caso base, que se resuelva sin
necesidad de recursividad.
– Todas las llamadas recursivas deben levar hacia el caso base
• El método debe comprobar si se debe realizar una nueva
llamada recursiva o si ya se ha alcanzado el caso base.
ALGORITMOS Y RECURSIVIDAD
6
• El caso base
– Supone el final de las llamadas recursivas.
– Y la realización de llamadas recursiva que lleva a él lo
que evita se entre en ciclos infinitos.
• Para crear una función recursiva, es necesario
tener una definición recursiva del problema.
– Ejemplo: Suma de los primeros números naturales.
Caso Base: s(1) = 1;
Caso general: s(n) = s(n-1) + n
El problema esta definido en forma recursiva, para conocer la
suma de n números se debe conocer previamente la suma de
los n-1 números anteriores.
ALGORITMOS Y RECURSIVIDAD
7
Suma recursiva de los n primeros
números naturales
int SumaNat(int n)
{
int s;
if (n = = 1)
s = 1; // Caso Base
else
s = SumaNat(n-1) + n; // Caso general
return(s);
}
8
Funcionamiento de la recursividad
• Nótese que en una función recursiva es
necesaria una condición para distinguir el caso
base del inductivo.
• Para entender como funciona la recursividad es
necesario tener bien claro que en memoria no
existe una sola versión de la función recursiva.
• Cada vez que se invoque la función recursiva se
crea una nueva versión de la misma.
• La estructura de todas la versiones es la misma,
pero no así los datos que contiene cada una
9
Factorial de un número
Caso base: fact(0) = 1
Caso general: fact(n) = fact(n-1)·n
Int fact(int n)
{
if n(= =0)
return(1);
else
return(fact(n-1)*n)
}
10
Funcionamiento de la
recursividad
Main
Factorial
Factorial
Factorial
Factorial
n = 3
n = 2
n = 1
n = 0
Devuelve 2*3 = 6
Factorial(2)*3
Devuelve 1*2 = 2
Factorial(1)*2
Devuelve 1
Llamada n Valor
1ª
2ª
3ª
4ª caso base
3
2
1
0
6
2
1
1
IDA VUELTA
Devuelve 1*1 = 1
Factorial(0)*1
11
Funcionamiento de la recursividad
• En el anterior ejemplo se ilustro cómo las llamadas recursivas
se van produciendo hasta alcanzar el caso base.
• En ese punto se acaban las llamadas y empiezan las
devoluciones de valores hasta llegar al método main.
• Tenemos un movimiento en 2 sentidos
1º Hacia delante hasta alcanzar el caso base.
2º Hacia atrás devolviendo los resultados de cada llamada a la
función.
• Las llamadas realizadas implican una estructura pila.
• En cada llamada se realiza una copia de la función recursiva
(cada llamada implica una nueva copia de las variables de la
función). Esto consume memoria.
12
Correctitud en la recursividad
• ¿Cómo podemos determinar si un Algoritmo
Recursivo es o no correcto?
– Por simple observación es difícil.
– Es posible alcanzar ese objetivo con la ayuda
del principio de inducción.
• Verificando 1º el caso base, comprobando si
devuelve el resultado correcto para el valor más
pequeño.
• Verificando si el algoritmo funciona correctamente
para cualquier valor.
13
Recursividad vs. Iteración
• Características comunes:
1. Ambas implican repetición
– La iteración usa explícitamente una estructura de
repetición mientras que la recursión logra la
repetición mediante llamadas sucesivas a una
función.
1. Ambas requieren de una condición de fin.
– La iteración termina cuando deja de cumplirse la
condición para terminar el ciclo y la recursión
cuando se reconoce un caso base.
14
Recursividad vs. Iteración
3. Ambas se aproximan gradualmente a la
terminación.
• La iteración continua modificando un
contador, hasta que éste adquiere un valor
que hace que deje de cumplirse la condición
del ciclo.
• La recursividad sigue produciendo versiones
más sencillas del problema original hasta
llegar al caso base.
15
Recursividad vs. Iteración
4. Pueden continuar indefinidamente
• En la iteración ocurre un ciclo infinito, si la
condición del ciclo nunca deja de cumplirse.
• Se tiene una recursión infinita si cada
llamada recursiva no simplifica el problema
y no se alcanza el caso base o si aún
dirigiéndonos al caso base, lo saltamos.
16
Recursividad vs. Iteración
• Diferencias.
– La recursividad presenta una desventaja frente a la iteración: la
invocación repetida de la función.Cada llamada hace que se cree otra
copia de la función esto puede consumir una cantidad excesiva de
memoria.
– La iteración ocurre en la misma función, con lo que se omite el gasto
extra de llamadas a la función.
• Toda tarea que pueda realizarse con recursividad puede también
realizarse con una solución iterativa.
• Se elige la solución recursiva cuando este enfoque refleja de
forma más natural la solución del problema y produce un
programa más fácil de entender y depurar.
• Existen problemas cuya solución iterativa no es viable por lo
tanto la recursión es una solución.
17
Simulación de la recursividad
• Es posible simular la recursividad a través del uso
de una estructura pila y así emular llamadas
recursivas.
– Los parámetros de las llamadas a la función se van
almacenado en una pila hasta alcanzar el caso base.
– La vuelta atrás se consigue, sacando de la pila las los
elementos almacenados y procesándolos uno a uno
hasta que la pila quede vacía.
18
Aplicaciones de Recursividad
• Los algoritmos recursivos son muy importantes
en el diseño de algoritmos:
– Backtracking (vuelta atrás), búsqueda exhaustiva, usa
recursividad para probar todas las soluciones posibles.
– Divide y vencerás, transforma el problema de tamaño n
en problemas más pequeños de tamaño menor que n.De
tal modo que en base a problemas unitarios se
construye fácilmente una solución del problema
completo. Ej. Búsqueda binaria, ordenamiento
Quicksort, Torres de Hanoi.
19
Torres de Hanoi
• Dice la leyenda que, al crear el mundo, Dios situó sobre la
Tierra tres varillas de diamante y sesenta y cuatro discos
de oro. Los discos son todos de diferente tamaño e
inicialmente fueron colocados en orden decreciente de
diámetros sobre la primera de las varillas. También creó
Dios un monasterio cuyos monjes tienen la tarea de
trasladar todos los discos desde la primera varilla a la
tercera. La única operación permitida es mover un disco de
una varilla a otra cualquiera, pero con la condición de que
no se puede situar encima de un disco otro de diámetro
mayor. La leyenda dice también que cuando los monjes
terminen su tarea, el mundo se acabará.
20
Torres de Hanoi (def. problema)
• Se tienen 3 postes A, B y C; en el poste A se
tiene n discos de tamaño decreciente.
• El objetivo es mover uno a uno los discos desde
el poste A al poste C utilizando el poste B como
auxiliar.
• No es posible tener un disco de mayor radio
encima de otro de menor radio
A B C
Poste
objetivo
Poste
auxilia
r
21
Torres de Hanoi (solución)
• Mover n discos
– Mover los n-1 discos superiores de A a B.
– Mover el disco n de A a C.
– Mover los n-1 discos de B a C.
• El problema de mover n discos se ha transforma en un
problema de tamaño n-1.
• Mover n-1 discos
– Mover los n-2 discos superiores de A a C.
– Mover el disco n-1 de A a B.
– Mover los n-2 discos de C a B.
• De este modo se va reduciendo cada vez un nivel la
dificultad del problema hasta que el mismo sólo consista
en mover un disco.
22
Torres de Hanoi (solución)
• La técnica consiste en ir intercambiando la
finalidad de los postes, origen destino y
auxiliar.
• La condición de terminación es que el número
de discos sea 1.
• Cada acción de mover un disco realiza los
mismos pasos, por lo que es posible expresar la
función de manera recursiva.
23
Torres de Hanoi (solución)
void Hanoi (int n, char origen, char destino, char aux)
{
if (n==1) //Caso básico
cout<<"n mover el disco del poste”<<origen<<“ a ”<<destino;
else /* Caso general: divide y vencerás*/
{
Hanoi (n-1, origen, aux, destino);
cout<<"n mover el disco del poste”<<origen<<“ a ”<<destino;
Hanoi (n-1, aux, destino, origen);
}
}

Más contenido relacionado

La actualidad más candente

ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣDimitris Psounis
 
ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2Dimitris Psounis
 
Calculo relacional de base de datos
Calculo relacional de base de datosCalculo relacional de base de datos
Calculo relacional de base de datosDILMER OLIVERA
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la pooBoris Salleg
 
Error and exception in python
Error and exception in pythonError and exception in python
Error and exception in pythonjunnubabu
 
Examen final de base de datos ii solucionado
Examen final de base de datos ii solucionadoExamen final de base de datos ii solucionado
Examen final de base de datos ii solucionadoBertha Canaviri
 
Informe algoritmos de busqueda
Informe algoritmos de busquedaInforme algoritmos de busqueda
Informe algoritmos de busquedaGonzalo Retamal
 
04 brute force
04 brute force04 brute force
04 brute forceHira Gul
 
Log based and Recovery with concurrent transaction
Log based and Recovery with concurrent transactionLog based and Recovery with concurrent transaction
Log based and Recovery with concurrent transactionnikunjandy
 
04 Classification in Data Mining
04 Classification in Data Mining04 Classification in Data Mining
04 Classification in Data MiningValerii Klymchuk
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
 
Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completoBoris Salleg
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑDimitris Psounis
 

La actualidad más candente (20)

ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
ΠΛΗ10 ΜΑΘΗΜΑ 2.3: ΤΕΛΕΣΤΕΣ ΚΑΙ Η ΕΝΤΟΛΗ ΑΠΟΦΑΣΗΣ
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ20 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
 
Colas estáticas. IESIT
Colas estáticas. IESITColas estáticas. IESIT
Colas estáticas. IESIT
 
Calculo relacional de base de datos
Calculo relacional de base de datosCalculo relacional de base de datos
Calculo relacional de base de datos
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la poo
 
Error and exception in python
Error and exception in pythonError and exception in python
Error and exception in python
 
Examen final de base de datos ii solucionado
Examen final de base de datos ii solucionadoExamen final de base de datos ii solucionado
Examen final de base de datos ii solucionado
 
Informe algoritmos de busqueda
Informe algoritmos de busquedaInforme algoritmos de busqueda
Informe algoritmos de busqueda
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
04 brute force
04 brute force04 brute force
04 brute force
 
Log based and Recovery with concurrent transaction
Log based and Recovery with concurrent transactionLog based and Recovery with concurrent transaction
Log based and Recovery with concurrent transaction
 
04 Classification in Data Mining
04 Classification in Data Mining04 Classification in Data Mining
04 Classification in Data Mining
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
 
Algoritmo de listas simples completo
Algoritmo de listas simples  completoAlgoritmo de listas simples  completo
Algoritmo de listas simples completo
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 

Similar a Unidad 2 p1 (20)

Recursividad.ppt
Recursividad.pptRecursividad.ppt
Recursividad.ppt
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
2. Recursividad
2. Recursividad2. Recursividad
2. Recursividad
 
Recursividad.pdf
Recursividad.pdfRecursividad.pdf
Recursividad.pdf
 
Recursividad 100329105433-phpapp01
Recursividad 100329105433-phpapp01Recursividad 100329105433-phpapp01
Recursividad 100329105433-phpapp01
 
03 tda1 t2018
03 tda1 t201803 tda1 t2018
03 tda1 t2018
 
Enfoques
EnfoquesEnfoques
Enfoques
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
Sistemas inteligentes
Sistemas inteligentesSistemas inteligentes
Sistemas inteligentes
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursividad
RecursividadRecursividad
Recursividad
 
Torres de hanói melany rojas
Torres de hanói melany rojasTorres de hanói melany rojas
Torres de hanói melany rojas
 
Programación Orientada a Objetos parte 3
Programación Orientada a Objetos  parte 3Programación Orientada a Objetos  parte 3
Programación Orientada a Objetos parte 3
 
Funciones recursivas
Funciones recursivasFunciones recursivas
Funciones recursivas
 
Técnica del backtracking o vuelta atrás
Técnica del backtracking o vuelta atrásTécnica del backtracking o vuelta atrás
Técnica del backtracking o vuelta atrás
 
Recursividad.pdf
Recursividad.pdfRecursividad.pdf
Recursividad.pdf
 
Curso recursividad
Curso   recursividadCurso   recursividad
Curso recursividad
 

Último

30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicaFlor Idalia Espinoza Ortega
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 

Último (20)

30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
celula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamicacelula, tipos, teoria celular, energia y dinamica
celula, tipos, teoria celular, energia y dinamica
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 

Unidad 2 p1

  • 2. UNIDAD 2: RECURSIVIDAD Y MANEJO DE ESTRUCTURAS 2
  • 3. CONTENIDO • Funciones recursivas • Tipos de datos abstractos. • Enumeraciones, Uniones • Estructuras: definición, declaración, acceso a elementos. • Arreglos dentro de una estructura. • Arreglos de estructuras. • Paso de estructuras como parámetros • Estructuras anidadas. • Miembro recursivo de una estructura 3
  • 4. 4 ALGORITMOS Y RECURSIVIDAD • Un procedimiento o función recursiva es aquella que se llama a si misma. – La ejecución del proceso recursivo se repite con valores (parámetros) diferentes. • La recursividad es una alternativa a la iteración muy elegante en la resolución de problemas de naturaleza recursiva. Permite especificar una solución simple y natural para resolver problemas definidos en términos de sí mismos. – Ejemplo: Los números naturales • 0 es un número Natural • El siguiente número de un número natural es otro nro natural
  • 5. 5 • La recursividad está relacionada con el principio de inducción. – Existe un caso base, en el que no existe ninguna llamada recursiva.(Condición o criterio base) – Existe un caso general conocido como caso inductivo, en las que se realizan llamadas a versiones de la misma función con parámetros diferentes que conducen al caso base. • Por lo tanto – Hay que incluir por lo menos un caso base, que se resuelva sin necesidad de recursividad. – Todas las llamadas recursivas deben levar hacia el caso base • El método debe comprobar si se debe realizar una nueva llamada recursiva o si ya se ha alcanzado el caso base. ALGORITMOS Y RECURSIVIDAD
  • 6. 6 • El caso base – Supone el final de las llamadas recursivas. – Y la realización de llamadas recursiva que lleva a él lo que evita se entre en ciclos infinitos. • Para crear una función recursiva, es necesario tener una definición recursiva del problema. – Ejemplo: Suma de los primeros números naturales. Caso Base: s(1) = 1; Caso general: s(n) = s(n-1) + n El problema esta definido en forma recursiva, para conocer la suma de n números se debe conocer previamente la suma de los n-1 números anteriores. ALGORITMOS Y RECURSIVIDAD
  • 7. 7 Suma recursiva de los n primeros números naturales int SumaNat(int n) { int s; if (n = = 1) s = 1; // Caso Base else s = SumaNat(n-1) + n; // Caso general return(s); }
  • 8. 8 Funcionamiento de la recursividad • Nótese que en una función recursiva es necesaria una condición para distinguir el caso base del inductivo. • Para entender como funciona la recursividad es necesario tener bien claro que en memoria no existe una sola versión de la función recursiva. • Cada vez que se invoque la función recursiva se crea una nueva versión de la misma. • La estructura de todas la versiones es la misma, pero no así los datos que contiene cada una
  • 9. 9 Factorial de un número Caso base: fact(0) = 1 Caso general: fact(n) = fact(n-1)·n Int fact(int n) { if n(= =0) return(1); else return(fact(n-1)*n) }
  • 10. 10 Funcionamiento de la recursividad Main Factorial Factorial Factorial Factorial n = 3 n = 2 n = 1 n = 0 Devuelve 2*3 = 6 Factorial(2)*3 Devuelve 1*2 = 2 Factorial(1)*2 Devuelve 1 Llamada n Valor 1ª 2ª 3ª 4ª caso base 3 2 1 0 6 2 1 1 IDA VUELTA Devuelve 1*1 = 1 Factorial(0)*1
  • 11. 11 Funcionamiento de la recursividad • En el anterior ejemplo se ilustro cómo las llamadas recursivas se van produciendo hasta alcanzar el caso base. • En ese punto se acaban las llamadas y empiezan las devoluciones de valores hasta llegar al método main. • Tenemos un movimiento en 2 sentidos 1º Hacia delante hasta alcanzar el caso base. 2º Hacia atrás devolviendo los resultados de cada llamada a la función. • Las llamadas realizadas implican una estructura pila. • En cada llamada se realiza una copia de la función recursiva (cada llamada implica una nueva copia de las variables de la función). Esto consume memoria.
  • 12. 12 Correctitud en la recursividad • ¿Cómo podemos determinar si un Algoritmo Recursivo es o no correcto? – Por simple observación es difícil. – Es posible alcanzar ese objetivo con la ayuda del principio de inducción. • Verificando 1º el caso base, comprobando si devuelve el resultado correcto para el valor más pequeño. • Verificando si el algoritmo funciona correctamente para cualquier valor.
  • 13. 13 Recursividad vs. Iteración • Características comunes: 1. Ambas implican repetición – La iteración usa explícitamente una estructura de repetición mientras que la recursión logra la repetición mediante llamadas sucesivas a una función. 1. Ambas requieren de una condición de fin. – La iteración termina cuando deja de cumplirse la condición para terminar el ciclo y la recursión cuando se reconoce un caso base.
  • 14. 14 Recursividad vs. Iteración 3. Ambas se aproximan gradualmente a la terminación. • La iteración continua modificando un contador, hasta que éste adquiere un valor que hace que deje de cumplirse la condición del ciclo. • La recursividad sigue produciendo versiones más sencillas del problema original hasta llegar al caso base.
  • 15. 15 Recursividad vs. Iteración 4. Pueden continuar indefinidamente • En la iteración ocurre un ciclo infinito, si la condición del ciclo nunca deja de cumplirse. • Se tiene una recursión infinita si cada llamada recursiva no simplifica el problema y no se alcanza el caso base o si aún dirigiéndonos al caso base, lo saltamos.
  • 16. 16 Recursividad vs. Iteración • Diferencias. – La recursividad presenta una desventaja frente a la iteración: la invocación repetida de la función.Cada llamada hace que se cree otra copia de la función esto puede consumir una cantidad excesiva de memoria. – La iteración ocurre en la misma función, con lo que se omite el gasto extra de llamadas a la función. • Toda tarea que pueda realizarse con recursividad puede también realizarse con una solución iterativa. • Se elige la solución recursiva cuando este enfoque refleja de forma más natural la solución del problema y produce un programa más fácil de entender y depurar. • Existen problemas cuya solución iterativa no es viable por lo tanto la recursión es una solución.
  • 17. 17 Simulación de la recursividad • Es posible simular la recursividad a través del uso de una estructura pila y así emular llamadas recursivas. – Los parámetros de las llamadas a la función se van almacenado en una pila hasta alcanzar el caso base. – La vuelta atrás se consigue, sacando de la pila las los elementos almacenados y procesándolos uno a uno hasta que la pila quede vacía.
  • 18. 18 Aplicaciones de Recursividad • Los algoritmos recursivos son muy importantes en el diseño de algoritmos: – Backtracking (vuelta atrás), búsqueda exhaustiva, usa recursividad para probar todas las soluciones posibles. – Divide y vencerás, transforma el problema de tamaño n en problemas más pequeños de tamaño menor que n.De tal modo que en base a problemas unitarios se construye fácilmente una solución del problema completo. Ej. Búsqueda binaria, ordenamiento Quicksort, Torres de Hanoi.
  • 19. 19 Torres de Hanoi • Dice la leyenda que, al crear el mundo, Dios situó sobre la Tierra tres varillas de diamante y sesenta y cuatro discos de oro. Los discos son todos de diferente tamaño e inicialmente fueron colocados en orden decreciente de diámetros sobre la primera de las varillas. También creó Dios un monasterio cuyos monjes tienen la tarea de trasladar todos los discos desde la primera varilla a la tercera. La única operación permitida es mover un disco de una varilla a otra cualquiera, pero con la condición de que no se puede situar encima de un disco otro de diámetro mayor. La leyenda dice también que cuando los monjes terminen su tarea, el mundo se acabará.
  • 20. 20 Torres de Hanoi (def. problema) • Se tienen 3 postes A, B y C; en el poste A se tiene n discos de tamaño decreciente. • El objetivo es mover uno a uno los discos desde el poste A al poste C utilizando el poste B como auxiliar. • No es posible tener un disco de mayor radio encima de otro de menor radio A B C Poste objetivo Poste auxilia r
  • 21. 21 Torres de Hanoi (solución) • Mover n discos – Mover los n-1 discos superiores de A a B. – Mover el disco n de A a C. – Mover los n-1 discos de B a C. • El problema de mover n discos se ha transforma en un problema de tamaño n-1. • Mover n-1 discos – Mover los n-2 discos superiores de A a C. – Mover el disco n-1 de A a B. – Mover los n-2 discos de C a B. • De este modo se va reduciendo cada vez un nivel la dificultad del problema hasta que el mismo sólo consista en mover un disco.
  • 22. 22 Torres de Hanoi (solución) • La técnica consiste en ir intercambiando la finalidad de los postes, origen destino y auxiliar. • La condición de terminación es que el número de discos sea 1. • Cada acción de mover un disco realiza los mismos pasos, por lo que es posible expresar la función de manera recursiva.
  • 23. 23 Torres de Hanoi (solución) void Hanoi (int n, char origen, char destino, char aux) { if (n==1) //Caso básico cout<<"n mover el disco del poste”<<origen<<“ a ”<<destino; else /* Caso general: divide y vencerás*/ { Hanoi (n-1, origen, aux, destino); cout<<"n mover el disco del poste”<<origen<<“ a ”<<destino; Hanoi (n-1, aux, destino, origen); } }