Recursividad terminal
Upcoming SlideShare
Loading in...5
×
 

Recursividad terminal

on

  • 5,726 views

Descripcion de la recursividad terminal o de cola

Descripcion de la recursividad terminal o de cola

Statistics

Views

Total Views
5,726
Views on SlideShare
4,534
Embed Views
1,192

Actions

Likes
3
Downloads
62
Comments
0

16 Embeds 1,192

http://fernandogarciarivera.blogspot.com 871
http://fernandogarciarivera.blogspot.mx 129
http://pepgonzalez.blogspot.com 75
http://pepgonzalez.blogspot.com.es 32
http://pepgonzalez.blogspot.mx 25
http://fernandogarciarivera.blogspot.com.ar 16
http://fernandogarciarivera.blogspot.com.es 15
http://pepgonzalez.blogspot.com.ar 9
http://www.pepgonzalez.blogspot.com 8
http://megasistem.com.ar 4
http://fernandogarciarivera.blogspot.com.br 3
http://fernandogarciarivera.blogspot.it 1
http://www.pepgonzalez.blogspot.mx 1
http://fernandogarciarivera.blogspot.de 1
http://pepgonzalez.blogspot.com.br 1
http://fernandogarciarivera.blogspot.ca 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Recursividad terminal Recursividad terminal Presentation Transcript

  • 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.
    View slide
  • 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.”
    View slide
  • 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
    • Se le agrega un contador, para que el proceso se realice alli mismo y no tener que llamar a la funcion de nuevo
    • 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
  • Comparando
    Recursividad normal
    Recursividad de cola
  • 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.
  • 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.