SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
RECURSIVIDAD
EN
PROGRAMACIÓN
20
20
¿Qué es la
recursividad en
programación?
La recursividad es un concepto que se indica cuando un
método se llama a si mismo. Cuando creamos un método
recursivo debemos tener en cuenta que este tiene que
terminar por lo que dentro del método debemos
asegurarnos de que no se está llamando a si mismo todo el
rato, Lo que quiere decir que el ciclo es finito.
Como se puede apreciar de la descripción anterior.
Podemos utilizar recursividad para reemplazar cualquier
tipo de bucle. A pesar de ello en el mundo laboral no se
utiliza demasiado, debido a que un error puede ser trágico
en la memoria, así como tener una lista con millones de
datos, puede hacer que utiliza mucha memoria. Aun así, la
gran mayoría de las veces, utilizamos recursividad para
algoritmos de búsqueda u ordenación.
Se denomina caso base a la condición de terminación de la
recursividad.
¿CUANDO UTI LI ZAR
RECURSI VI DAD?
Debemos tener mucho cuidado cuando realizamos
llamadas recursivas ya que si la utilizamos sin control
podríamos desbordar la memoria del ordenador, causando
que el programa se rompa.
Ejemplo 1
Ejemplo es calcular el factorial de un numero.*multiplicar todos los números
entre dos enteros. En matemáticas se expresa con n! donde n es el último
número a comprobar. Debemos empezar desde el 1.
Ejemplo utilizando un método iterativo
public static int FactorialIterativo(int numero)
{
int i, resultado = 1;
for(i=1; i <= numero; i++)
{
resultado = resultado * i;
}
return resultado;
}
El ejemplo utilizando método recursivo
public static int FactorialRecursivo(int numero)
{
if (numero == 0) return 1;
return numero * FactorialRecursivo(numero - 1);
}
Segmento de código: almacena las instrucciones del programa en código
máquina.
Segmento de datos: almacena las variables estáticas o constantes.
Montículo: almacena las variables dinámicas
Pila del programa: Parte destinada a las variables locales y parámetros de la
función que se está ejecutando.
La memoria de un ordenador se divide en 4 segmentos
LA PI LA DE RECURSI ÓN
Se reserva espacio en la pila para los parámetros de la función y sus
variables locales.
Se guarda en la pila la dirección de la línea del código desde donde se ha
llamado al método.
Se almacenan los parámetros de la función y sus valores en la pila.
Finalmente se libera la memora asignada en la pila cuando la función
termina y se vuelve a la llamada de código original.
Cada llamada genera una nueva llamada a una función con los
correspondientes objetos locales.
Volviéndose a ejecutar completamente, hasta la llamada a si misma. Donde
vuelve a crear en la pila los nuevos parámetros y variables locales. Tantos
como llamadas recursivas generemos.
Al terminar, se van liberando la memoria en la pila, empezando desde la
última función creada hasta la primera, la cual será la ultima en liberarse.
Cuando llamamos a una función (o método) el proceso es el siguiente
1.
2.
3.
4.
En cambio, cuando la función es recursiva:
Para saber mas del tema ver el siguiente video:
https://www.youtube.com/watch?v=i9roxX8z7tk
https://youtu.be/S_26PzzdAs4

Más contenido relacionado

La actualidad más candente

Fundamentos de programación(1)
Fundamentos de programación(1)Fundamentos de programación(1)
Fundamentos de programación(1)josue estupiñan
 
Prueba programacion
Prueba programacionPrueba programacion
Prueba programacionMarti Matura
 
1.4.2 stack segment
1.4.2  stack  segment1.4.2  stack  segment
1.4.2 stack segmentgabo
 
Libreria ronald jimenez
Libreria ronald jimenezLibreria ronald jimenez
Libreria ronald jimenezUTPL
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_Jesus22barrera
 
Taller de ciclos en PSeInt
Taller de ciclos en PSeIntTaller de ciclos en PSeInt
Taller de ciclos en PSeIntCristian C
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionalesKeevynMoreno
 
Programación de nivel básico 3. c2. p2.
Programación de nivel básico 3. c2. p2.Programación de nivel básico 3. c2. p2.
Programación de nivel básico 3. c2. p2.DENIRAMIREZANDRADE
 
Conociendo los Lenguajes de Programacion
Conociendo los Lenguajes de ProgramacionConociendo los Lenguajes de Programacion
Conociendo los Lenguajes de Programacionsandra gutierrez
 

La actualidad más candente (14)

Fundamentos de programación(1)
Fundamentos de programación(1)Fundamentos de programación(1)
Fundamentos de programación(1)
 
Prueba programacion
Prueba programacionPrueba programacion
Prueba programacion
 
Guia 1
Guia 1Guia 1
Guia 1
 
1.4.2 stack segment
1.4.2  stack  segment1.4.2  stack  segment
1.4.2 stack segment
 
Libreria ronald jimenez
Libreria ronald jimenezLibreria ronald jimenez
Libreria ronald jimenez
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 
Taller de ciclos en PSeInt
Taller de ciclos en PSeIntTaller de ciclos en PSeInt
Taller de ciclos en PSeInt
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
PDF 7
PDF 7PDF 7
PDF 7
 
Estructura de control repetitivo diapositivas
Estructura de control repetitivo diapositivasEstructura de control repetitivo diapositivas
Estructura de control repetitivo diapositivas
 
Programación de nivel básico 3. c2. p2.
Programación de nivel básico 3. c2. p2.Programación de nivel básico 3. c2. p2.
Programación de nivel básico 3. c2. p2.
 
Conociendo los Lenguajes de Programacion
Conociendo los Lenguajes de ProgramacionConociendo los Lenguajes de Programacion
Conociendo los Lenguajes de Programacion
 
Editable
EditableEditable
Editable
 
Greenfoot 5
Greenfoot 5Greenfoot 5
Greenfoot 5
 

Similar a Recursividad en programación: concepto, ejemplos y uso de la pila

TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdf
TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdfTALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdf
TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdfedepisabellafernande
 
TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdf
TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdfTALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdf
TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdfAngelineBocanegra
 
Capítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdfCapítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdfIgor Rodriguez
 
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSIsai Vazquez
 
Recursividad2019
Recursividad2019Recursividad2019
Recursividad2019difersld
 
Estructura de datos c++
Estructura de datos c++Estructura de datos c++
Estructura de datos c++kikeMerck
 
Introduccion web paula
Introduccion web paulaIntroduccion web paula
Introduccion web paulaPaan-Benitez
 
19189723 estructura-de-datos-programacion-facil
19189723 estructura-de-datos-programacion-facil19189723 estructura-de-datos-programacion-facil
19189723 estructura-de-datos-programacion-facilDariana Acuariogv
 

Similar a Recursividad en programación: concepto, ejemplos y uso de la pila (20)

TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdf
TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdfTALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdf
TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdf
 
TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdf
TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdfTALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdf
TALLER DE TECNOLOGIA GRUPO 6, SEGUNDO PERIODO 10-2..docx.pdf
 
Capítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdfCapítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdf
 
Examen 2 s,o,
Examen 2 s,o,Examen 2 s,o,
Examen 2 s,o,
 
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSESTRUCTURA DE DATOS
ESTRUCTURA DE DATOS
 
Curso MATLAB
Curso MATLABCurso MATLAB
Curso MATLAB
 
Recursividad2019
Recursividad2019Recursividad2019
Recursividad2019
 
Yeimir rincon 20%
Yeimir rincon 20%Yeimir rincon 20%
Yeimir rincon 20%
 
Recursión
RecursiónRecursión
Recursión
 
Funciones
FuncionesFunciones
Funciones
 
Recursividad terminal
Recursividad terminalRecursividad terminal
Recursividad terminal
 
Estructura de datos c++
Estructura de datos c++Estructura de datos c++
Estructura de datos c++
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones
FuncionesFunciones
Funciones
 
MEMOIZACIÓN
MEMOIZACIÓNMEMOIZACIÓN
MEMOIZACIÓN
 
Recursividad
RecursividadRecursividad
Recursividad
 
Tecnología
Tecnología Tecnología
Tecnología
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Introduccion web paula
Introduccion web paulaIntroduccion web paula
Introduccion web paula
 
19189723 estructura-de-datos-programacion-facil
19189723 estructura-de-datos-programacion-facil19189723 estructura-de-datos-programacion-facil
19189723 estructura-de-datos-programacion-facil
 

Más de KareliaRivas

Lenguaje de programación Python
Lenguaje de programación PythonLenguaje de programación Python
Lenguaje de programación PythonKareliaRivas
 
Diseño e instalación de sitios web (PHP hypertext preprocessor)
Diseño e instalación de sitios web (PHP hypertext preprocessor)Diseño e instalación de sitios web (PHP hypertext preprocessor)
Diseño e instalación de sitios web (PHP hypertext preprocessor)KareliaRivas
 
Estrategia de aprendizaje 17 (Herencia)
Estrategia de aprendizaje 17 (Herencia)Estrategia de aprendizaje 17 (Herencia)
Estrategia de aprendizaje 17 (Herencia)KareliaRivas
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)KareliaRivas
 
Estrategia de aprendizaje 16 (Introducción a html)
Estrategia de aprendizaje 16 (Introducción a html)Estrategia de aprendizaje 16 (Introducción a html)
Estrategia de aprendizaje 16 (Introducción a html)KareliaRivas
 
Introducción a HTML
Introducción a HTMLIntroducción a HTML
Introducción a HTMLKareliaRivas
 
Programación orientada a objetos (Crear objetos)
Programación orientada a objetos (Crear objetos)Programación orientada a objetos (Crear objetos)
Programación orientada a objetos (Crear objetos)KareliaRivas
 
Programación orientada a objetos (Creación de clases)
Programación orientada a objetos (Creación de clases)Programación orientada a objetos (Creación de clases)
Programación orientada a objetos (Creación de clases)KareliaRivas
 
Los tipos de lenguaje de programación
Los tipos de lenguaje de programaciónLos tipos de lenguaje de programación
Los tipos de lenguaje de programaciónKareliaRivas
 
Diseño e instalación de sitios web (Apache HTTP server)
Diseño e instalación de sitios web (Apache HTTP server)Diseño e instalación de sitios web (Apache HTTP server)
Diseño e instalación de sitios web (Apache HTTP server)KareliaRivas
 
Introducción a la programación orientada a objetos en c (POO)
Introducción a la programación orientada a objetos en c (POO)Introducción a la programación orientada a objetos en c (POO)
Introducción a la programación orientada a objetos en c (POO)KareliaRivas
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programaciónKareliaRivas
 
Diseño e instalación de sitios web (Definición de un servidor web)
Diseño e instalación de sitios web (Definición de un servidor web)Diseño e instalación de sitios web (Definición de un servidor web)
Diseño e instalación de sitios web (Definición de un servidor web)KareliaRivas
 
Interfaces para sistemas de gestión de bases de datos
Interfaces para sistemas de gestión de bases de datosInterfaces para sistemas de gestión de bases de datos
Interfaces para sistemas de gestión de bases de datosKareliaRivas
 
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...KareliaRivas
 
Tipos de bases de datos distribuidas
Tipos de bases de datos distribuidasTipos de bases de datos distribuidas
Tipos de bases de datos distribuidasKareliaRivas
 

Más de KareliaRivas (20)

Lenguaje de programación Python
Lenguaje de programación PythonLenguaje de programación Python
Lenguaje de programación Python
 
Diseño e instalación de sitios web (PHP hypertext preprocessor)
Diseño e instalación de sitios web (PHP hypertext preprocessor)Diseño e instalación de sitios web (PHP hypertext preprocessor)
Diseño e instalación de sitios web (PHP hypertext preprocessor)
 
Estrategia de aprendizaje 17 (Herencia)
Estrategia de aprendizaje 17 (Herencia)Estrategia de aprendizaje 17 (Herencia)
Estrategia de aprendizaje 17 (Herencia)
 
Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)Programación orientada a objetos (Herencia)
Programación orientada a objetos (Herencia)
 
Estrategia de aprendizaje 16 (Introducción a html)
Estrategia de aprendizaje 16 (Introducción a html)Estrategia de aprendizaje 16 (Introducción a html)
Estrategia de aprendizaje 16 (Introducción a html)
 
C#
C#C#
C#
 
Introducción a HTML
Introducción a HTMLIntroducción a HTML
Introducción a HTML
 
Programación orientada a objetos (Crear objetos)
Programación orientada a objetos (Crear objetos)Programación orientada a objetos (Crear objetos)
Programación orientada a objetos (Crear objetos)
 
Java
JavaJava
Java
 
Html
HtmlHtml
Html
 
Programación orientada a objetos (Creación de clases)
Programación orientada a objetos (Creación de clases)Programación orientada a objetos (Creación de clases)
Programación orientada a objetos (Creación de clases)
 
Los tipos de lenguaje de programación
Los tipos de lenguaje de programaciónLos tipos de lenguaje de programación
Los tipos de lenguaje de programación
 
Diseño e instalación de sitios web (Apache HTTP server)
Diseño e instalación de sitios web (Apache HTTP server)Diseño e instalación de sitios web (Apache HTTP server)
Diseño e instalación de sitios web (Apache HTTP server)
 
Introducción a la programación orientada a objetos en c (POO)
Introducción a la programación orientada a objetos en c (POO)Introducción a la programación orientada a objetos en c (POO)
Introducción a la programación orientada a objetos en c (POO)
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Diseño e instalación de sitios web (Definición de un servidor web)
Diseño e instalación de sitios web (Definición de un servidor web)Diseño e instalación de sitios web (Definición de un servidor web)
Diseño e instalación de sitios web (Definición de un servidor web)
 
Factorial en C++
Factorial en C++Factorial en C++
Factorial en C++
 
Interfaces para sistemas de gestión de bases de datos
Interfaces para sistemas de gestión de bases de datosInterfaces para sistemas de gestión de bases de datos
Interfaces para sistemas de gestión de bases de datos
 
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...
Diseño e instalación de sitios web (El reto del espacio en pantalla / plantil...
 
Tipos de bases de datos distribuidas
Tipos de bases de datos distribuidasTipos de bases de datos distribuidas
Tipos de bases de datos distribuidas
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 

Último (19)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 

Recursividad en programación: concepto, ejemplos y uso de la pila

  • 2. ¿Qué es la recursividad en programación? La recursividad es un concepto que se indica cuando un método se llama a si mismo. Cuando creamos un método recursivo debemos tener en cuenta que este tiene que terminar por lo que dentro del método debemos asegurarnos de que no se está llamando a si mismo todo el rato, Lo que quiere decir que el ciclo es finito. Como se puede apreciar de la descripción anterior. Podemos utilizar recursividad para reemplazar cualquier tipo de bucle. A pesar de ello en el mundo laboral no se utiliza demasiado, debido a que un error puede ser trágico en la memoria, así como tener una lista con millones de datos, puede hacer que utiliza mucha memoria. Aun así, la gran mayoría de las veces, utilizamos recursividad para algoritmos de búsqueda u ordenación. Se denomina caso base a la condición de terminación de la recursividad. ¿CUANDO UTI LI ZAR RECURSI VI DAD? Debemos tener mucho cuidado cuando realizamos llamadas recursivas ya que si la utilizamos sin control podríamos desbordar la memoria del ordenador, causando que el programa se rompa.
  • 3. Ejemplo 1 Ejemplo es calcular el factorial de un numero.*multiplicar todos los números entre dos enteros. En matemáticas se expresa con n! donde n es el último número a comprobar. Debemos empezar desde el 1. Ejemplo utilizando un método iterativo public static int FactorialIterativo(int numero) { int i, resultado = 1; for(i=1; i <= numero; i++) { resultado = resultado * i; } return resultado; } El ejemplo utilizando método recursivo public static int FactorialRecursivo(int numero) { if (numero == 0) return 1; return numero * FactorialRecursivo(numero - 1); } Segmento de código: almacena las instrucciones del programa en código máquina. Segmento de datos: almacena las variables estáticas o constantes. Montículo: almacena las variables dinámicas Pila del programa: Parte destinada a las variables locales y parámetros de la función que se está ejecutando. La memoria de un ordenador se divide en 4 segmentos LA PI LA DE RECURSI ÓN
  • 4. Se reserva espacio en la pila para los parámetros de la función y sus variables locales. Se guarda en la pila la dirección de la línea del código desde donde se ha llamado al método. Se almacenan los parámetros de la función y sus valores en la pila. Finalmente se libera la memora asignada en la pila cuando la función termina y se vuelve a la llamada de código original. Cada llamada genera una nueva llamada a una función con los correspondientes objetos locales. Volviéndose a ejecutar completamente, hasta la llamada a si misma. Donde vuelve a crear en la pila los nuevos parámetros y variables locales. Tantos como llamadas recursivas generemos. Al terminar, se van liberando la memoria en la pila, empezando desde la última función creada hasta la primera, la cual será la ultima en liberarse. Cuando llamamos a una función (o método) el proceso es el siguiente 1. 2. 3. 4. En cambio, cuando la función es recursiva: Para saber mas del tema ver el siguiente video: https://www.youtube.com/watch?v=i9roxX8z7tk https://youtu.be/S_26PzzdAs4