SlideShare une entreprise Scribd logo
1  sur  15
Recursividad terminal Presentación 2.
¿ que es la recursividad? La recursividad es una técnica de programación, que consiste en que una serie de instrucciones se repiten como una subtarea de la tarea principal, es decir, las funciones, procesos o rutinas se llaman a sí mismos cada vez que lo requieran y se ejecutan repetidas veces hasta que se satisface una condición específica.
Recursividad La recursividad es un proceso muy útil a la hora de programar, pero en ocasiones, el uso de este tiene un costo computacional alto, debido a las constantes llamadas a la misma función o rutina y muchas veces estas llamadas consumen demasiada memoria.
Recursividad terminal En algunos algoritmos recursivos, se puede implementar un caso de recursividad especial llamado recursividad terminal, (también conocido como recursividad por cola), la cual es una técnica para optimizar la recursividad eliminando las constantes llamadas recursivas “La recursividad terminal o por cola es cuando la llamada recursiva es la última instrucción de la función.”
Recursividad terminal características de la recursividad terminal. *las funciones deben cumplir la condición que en la parte que realiza la llamada a la función, no debe existir ninguna otra sentencia. *el compilador o interprete,  tratan a la función recursiva   como una función iterativa
Recursividad terminal Una ventaja de la recursividad por cola es que podemos evitar la sobrecarga de cada llamada a la función y nos evitamos el gasto de memoria de pila.  . *pila de llamadas es donde se almacena los valores de las variables de las subrutinas, y  el stackoverflow (desbordamiento de pila) es cuando la memoria ya no es sufiente para almacenar todos los datos Con una función de recursividad terminal se puede evitar lo que se conoce como stackoverflow, que ocurre cuando la pila de llamadas (en ingles callstack) consume mucha memoria
EJEMPLOS A continuación se muestra un programa que calcule el factorial de un numero usando la recursividad normal. *funcion recursiva *condicion * los valores que debe regresar *en el return se vuelve a llamar la funcion *funcion principal *captura de dato *llamada de la funcion
EJEMPLOS Ahora se muestra el mismo programa, que calcula el factorial de una función, pero usando la recursividad terminal o de cola *funcion recursiva terminal ,[object Object]
  aquí se ase una funcion para que la estructura del main quede igual que en el otro ejemplo
Funcionmain con captura de dato y llamada de funcion,[object Object]
Recursividad terminal Una función recursiva normal se puede convertir a funcion recursiva termianl usando en la función original un parámetro adicional, usado para ir guardando un resultado de tal manera que la llamada recursiva ya no tiene una operación pendiente. También se usa una función adicional para mantener la sintaxis de como llamamos normalmente a la función. En el caso del factorial, para seguir llamando a la función de la forma fact(n).
Recursividad terminal Si estos dos programas se corren, ambos funcionaran y nos darán un resultado correcto, pero entre mas grande sea el numero que se desea calcular, mas cerca estará el programa de recursión normal de “tronar”, ya que el numero que se ocupe será el numero de veces que se estará autollamado la función, cargando así la memoria, con el riesgo de un desbordamiento.
Recursividad terminal La recursión de cola es importante para algunos lenguajes de alto nivel, En especial en idiomas funcional y los idiomas  miembros del familia Lisp.
Recursividad terminal     En estos idiomas la recursión de cola es la forma más utilizada comúnmente (y ha veces la única forma disponible) de ejecución de la iteración.      La especificación del lenguaje del sistema que exige las llamadas de la cola para ser optimizado, para que no crezca la pila. Las llamadas de la recursividad Tail también puede ser utilizado en Perl, con una variante del "goto" La declaración que toma un nombre de función.
Recursividad terminal En muchos casos, hacer una función recursiva por la cola (tail-recursive) es posible empleando técnicas adecuadas de programación.  Siempre que esto se logre podemos esperar un incremento significativo en la eficiencia de los programas.

Contenu connexe

Tendances

Unidad 4 Interoperabilidad entre sistemas operativos
Unidad 4 Interoperabilidad entre sistemas operativos Unidad 4 Interoperabilidad entre sistemas operativos
Unidad 4 Interoperabilidad entre sistemas operativos Roberto Encarnación
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Leinylson Fontinele
 
Arquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsArquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsEvandro Júnior
 
Modelos osi tcpip
Modelos osi tcpipModelos osi tcpip
Modelos osi tcpipSuguha
 
Computer organization and architecture.pptx
Computer organization and architecture.pptxComputer organization and architecture.pptx
Computer organization and architecture.pptxDIPTONILRAKSHIT
 
1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladoresJoOsee Kette
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Aula 03.1 - Operadores Relacionais e Lógicos
Aula 03.1 - Operadores Relacionais e LógicosAula 03.1 - Operadores Relacionais e Lógicos
Aula 03.1 - Operadores Relacionais e LógicosMessias Batista
 
sentencia Grant y Revoke
sentencia Grant y Revokesentencia Grant y Revoke
sentencia Grant y Revokesuperusuario2
 
Projeto calculadora em_java
Projeto calculadora em_javaProjeto calculadora em_java
Projeto calculadora em_javasamuelthiago
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
5.5 mecanismos de acceso a los archivos
5.5 mecanismos de acceso a los archivos5.5 mecanismos de acceso a los archivos
5.5 mecanismos de acceso a los archivosRey JOaquin
 
OOP Lecture 20-MultiThreading.pptx
OOP Lecture 20-MultiThreading.pptxOOP Lecture 20-MultiThreading.pptx
OOP Lecture 20-MultiThreading.pptxTanzila Kehkashan
 

Tendances (20)

Unidad 4 Interoperabilidad entre sistemas operativos
Unidad 4 Interoperabilidad entre sistemas operativos Unidad 4 Interoperabilidad entre sistemas operativos
Unidad 4 Interoperabilidad entre sistemas operativos
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Diagrama de caso de uso
Diagrama de caso de usoDiagrama de caso de uso
Diagrama de caso de uso
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)
 
sistemas distribuidos
sistemas distribuidossistemas distribuidos
sistemas distribuidos
 
Arquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsArquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e Threads
 
Modelos osi tcpip
Modelos osi tcpipModelos osi tcpip
Modelos osi tcpip
 
Computer organization and architecture.pptx
Computer organization and architecture.pptxComputer organization and architecture.pptx
Computer organization and architecture.pptx
 
Computo en paralelo con OpenMP y OpenMPI
Computo en paralelo con OpenMP y OpenMPIComputo en paralelo con OpenMP y OpenMPI
Computo en paralelo con OpenMP y OpenMPI
 
1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores1.3 lenguajes de simulacion y simuladores
1.3 lenguajes de simulacion y simuladores
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Лекція №5
Лекція №5Лекція №5
Лекція №5
 
Aula 03.1 - Operadores Relacionais e Lógicos
Aula 03.1 - Operadores Relacionais e LógicosAula 03.1 - Operadores Relacionais e Lógicos
Aula 03.1 - Operadores Relacionais e Lógicos
 
sentencia Grant y Revoke
sentencia Grant y Revokesentencia Grant y Revoke
sentencia Grant y Revoke
 
Projeto calculadora em_java
Projeto calculadora em_javaProjeto calculadora em_java
Projeto calculadora em_java
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
5.5 mecanismos de acceso a los archivos
5.5 mecanismos de acceso a los archivos5.5 mecanismos de acceso a los archivos
5.5 mecanismos de acceso a los archivos
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
Hilos hebras
Hilos hebrasHilos hebras
Hilos hebras
 
OOP Lecture 20-MultiThreading.pptx
OOP Lecture 20-MultiThreading.pptxOOP Lecture 20-MultiThreading.pptx
OOP Lecture 20-MultiThreading.pptx
 

En vedette

Principales puntos del paradigma hemergente
Principales puntos del paradigma hemergentePrincipales puntos del paradigma hemergente
Principales puntos del paradigma hemergentedaniryscaldera1987
 
Paradigmas emergentes
Paradigmas emergentesParadigmas emergentes
Paradigmas emergentesSilvia Obando
 
Teorias, sitemica complejidad y holismo
Teorias, sitemica complejidad y  holismoTeorias, sitemica complejidad y  holismo
Teorias, sitemica complejidad y holismoluxcsesita
 
Fractales y Teoría del Caos
Fractales y Teoría del CaosFractales y Teoría del Caos
Fractales y Teoría del CaosJimmy Campo
 
ANÁLISIS CONCEPTUAL DE LA TEORÍA GENERAL DE SISTEMAS
ANÁLISIS CONCEPTUAL DE LA TEORÍA GENERAL DE SISTEMASANÁLISIS CONCEPTUAL DE LA TEORÍA GENERAL DE SISTEMAS
ANÁLISIS CONCEPTUAL DE LA TEORÍA GENERAL DE SISTEMASkyrios85
 
Constructivismo de maturana
Constructivismo de maturanaConstructivismo de maturana
Constructivismo de maturanaguest178714
 

En vedette (11)

Principales puntos del paradigma hemergente
Principales puntos del paradigma hemergentePrincipales puntos del paradigma hemergente
Principales puntos del paradigma hemergente
 
Paradigmas emergentes
Paradigmas emergentesParadigmas emergentes
Paradigmas emergentes
 
Fractales
FractalesFractales
Fractales
 
Teorias, sitemica complejidad y holismo
Teorias, sitemica complejidad y  holismoTeorias, sitemica complejidad y  holismo
Teorias, sitemica complejidad y holismo
 
Fractales
FractalesFractales
Fractales
 
Autopoiesis Y Sistema
Autopoiesis Y SistemaAutopoiesis Y Sistema
Autopoiesis Y Sistema
 
Fractales y Teoría del Caos
Fractales y Teoría del CaosFractales y Teoría del Caos
Fractales y Teoría del Caos
 
ANÁLISIS CONCEPTUAL DE LA TEORÍA GENERAL DE SISTEMAS
ANÁLISIS CONCEPTUAL DE LA TEORÍA GENERAL DE SISTEMASANÁLISIS CONCEPTUAL DE LA TEORÍA GENERAL DE SISTEMAS
ANÁLISIS CONCEPTUAL DE LA TEORÍA GENERAL DE SISTEMAS
 
Constructivismo de maturana
Constructivismo de maturanaConstructivismo de maturana
Constructivismo de maturana
 
Leyes gestalt EN PUBLICIDAD.
Leyes gestalt EN PUBLICIDAD.Leyes gestalt EN PUBLICIDAD.
Leyes gestalt EN PUBLICIDAD.
 
Leyes de la Gestalt
Leyes de la GestaltLeyes de la Gestalt
Leyes de la Gestalt
 

Similaire à Recursividad terminal (20)

Capítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdfCapítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdf
 
Recursividad en programación
Recursividad en programaciónRecursividad en programación
Recursividad en programación
 
Recursividad
RecursividadRecursividad
Recursividad
 
Recursión
RecursiónRecursión
Recursión
 
Funciones
FuncionesFunciones
Funciones
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
Funciones
FuncionesFunciones
Funciones
 
RECURSIVIDAD C++
RECURSIVIDAD C++RECURSIVIDAD C++
RECURSIVIDAD C++
 
Programas_Recursivos.pptx
Programas_Recursivos.pptxProgramas_Recursivos.pptx
Programas_Recursivos.pptx
 
p
pp
p
 
05 - Funciones en lenguaje C
05 - Funciones en lenguaje C05 - Funciones en lenguaje C
05 - Funciones en lenguaje C
 
1.4.4 Recursividad con pilas.pptx
1.4.4 Recursividad con pilas.pptx1.4.4 Recursividad con pilas.pptx
1.4.4 Recursividad con pilas.pptx
 
Ventaja del uso de las Funciones en PHP
Ventaja del uso de las Funciones en PHPVentaja del uso de las Funciones en PHP
Ventaja del uso de las Funciones en PHP
 
Recursividad
RecursividadRecursividad
Recursividad
 
7 Razones para usar las funciones php
7 Razones para usar las funciones php7 Razones para usar las funciones php
7 Razones para usar las funciones php
 
Recursividad
RecursividadRecursividad
Recursividad
 
Introduccion web paula
Introduccion web paulaIntroduccion web paula
Introduccion web paula
 
Curso MATLAB
Curso MATLABCurso MATLAB
Curso MATLAB
 
Ciclos
CiclosCiclos
Ciclos
 
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSESTRUCTURA DE DATOS
ESTRUCTURA DE DATOS
 

Plus de Pepe Hernandez

Plus de Pepe Hernandez (6)

Pic
PicPic
Pic
 
Presentacion final POO
Presentacion final POOPresentacion final POO
Presentacion final POO
 
Presentacion proyecto final
Presentacion proyecto finalPresentacion proyecto final
Presentacion proyecto final
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Proyecto de medio curso
Proyecto de medio cursoProyecto de medio curso
Proyecto de medio curso
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 

Dernier

5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicialLorenaSanchez350426
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxMartín Ramírez
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 

Dernier (20)

5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicial
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 

Recursividad terminal

  • 2. ¿ que es la recursividad? La recursividad es una técnica de programación, que consiste en que una serie de instrucciones se repiten como una subtarea de la tarea principal, es decir, las funciones, procesos o rutinas se llaman a sí mismos cada vez que lo requieran y se ejecutan repetidas veces hasta que se satisface una condición específica.
  • 3. Recursividad La recursividad es un proceso muy útil a la hora de programar, pero en ocasiones, el uso de este tiene un costo computacional alto, debido a las constantes llamadas a la misma función o rutina y muchas veces estas llamadas consumen demasiada memoria.
  • 4. Recursividad terminal En algunos algoritmos recursivos, se puede implementar un caso de recursividad especial llamado recursividad terminal, (también conocido como recursividad por cola), la cual es una técnica para optimizar la recursividad eliminando las constantes llamadas recursivas “La recursividad terminal o por cola es cuando la llamada recursiva es la última instrucción de la función.”
  • 5. Recursividad terminal características de la recursividad terminal. *las funciones deben cumplir la condición que en la parte que realiza la llamada a la función, no debe existir ninguna otra sentencia. *el compilador o interprete, tratan a la función recursiva como una función iterativa
  • 6. Recursividad terminal Una ventaja de la recursividad por cola es que podemos evitar la sobrecarga de cada llamada a la función y nos evitamos el gasto de memoria de pila. . *pila de llamadas es donde se almacena los valores de las variables de las subrutinas, y el stackoverflow (desbordamiento de pila) es cuando la memoria ya no es sufiente para almacenar todos los datos Con una función de recursividad terminal se puede evitar lo que se conoce como stackoverflow, que ocurre cuando la pila de llamadas (en ingles callstack) consume mucha memoria
  • 7. EJEMPLOS A continuación se muestra un programa que calcule el factorial de un numero usando la recursividad normal. *funcion recursiva *condicion * los valores que debe regresar *en el return se vuelve a llamar la funcion *funcion principal *captura de dato *llamada de la funcion
  • 8.
  • 9. aquí se ase una funcion para que la estructura del main quede igual que en el otro ejemplo
  • 10.
  • 11. Recursividad terminal Una función recursiva normal se puede convertir a funcion recursiva termianl usando en la función original un parámetro adicional, usado para ir guardando un resultado de tal manera que la llamada recursiva ya no tiene una operación pendiente. También se usa una función adicional para mantener la sintaxis de como llamamos normalmente a la función. En el caso del factorial, para seguir llamando a la función de la forma fact(n).
  • 12. Recursividad terminal Si estos dos programas se corren, ambos funcionaran y nos darán un resultado correcto, pero entre mas grande sea el numero que se desea calcular, mas cerca estará el programa de recursión normal de “tronar”, ya que el numero que se ocupe será el numero de veces que se estará autollamado la función, cargando así la memoria, con el riesgo de un desbordamiento.
  • 13. Recursividad terminal La recursión de cola es importante para algunos lenguajes de alto nivel, En especial en idiomas funcional y los idiomas miembros del familia Lisp.
  • 14. Recursividad terminal En estos idiomas la recursión de cola es la forma más utilizada comúnmente (y ha veces la única forma disponible) de ejecución de la iteración. La especificación del lenguaje del sistema que exige las llamadas de la cola para ser optimizado, para que no crezca la pila. Las llamadas de la recursividad Tail también puede ser utilizado en Perl, con una variante del "goto" La declaración que toma un nombre de función.
  • 15. Recursividad terminal En muchos casos, hacer una función recursiva por la cola (tail-recursive) es posible empleando técnicas adecuadas de programación. Siempre que esto se logre podemos esperar un incremento significativo en la eficiencia de los programas.
  • 16. Recursividad terminal Se pude decir que la principal característica de la recursividad tail es que la llamada recursiva esta en la ultima posición ejecutada del procedimiento. Otros nombres de la Recursividad Tail: Recursividad terminal. Recursividad de cola. Recursividad de extremo final. Recursividad de extremo de cola.