Tarea Recursividad
Tarea Recursividad
Tarea Recursividad
Grupo: 3EV36.
23 – Abril – 2021.
Definición de recursividad.
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.
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 puede usar en toda situación en la cual la solución pueda ser expresada como una
secuencia de movimientos, pasos o transformaciones gobernadas por un conjunto de
reglas no ambiguas.
Recursividad e iteración.
Tanto la recursión como la iteración se usan para ejecutar algunas instrucciones
repetidamente hasta que alguna condición sea verdadera. Pero existe una diferencia
importante entre ambas, primero conoceremos el concepto de recursividad.
Recursividad se refiere a una situación en la que una función se llama a sí misma una y otra
vez.
La recursividad se usa para realizar algoritmos cortos y elegantes con menos código,
mientras que la iteración presentan la habitual forma de uno o varios bucles.
Hemos visto en el apartado anterior que el proceso generado por una función recursiva
tiene a veces un alto coste espacial y temporal debido a las llamadas que permenacen en
espera en la pila de la recursión.
Es posible escribir programas recursivos que generen procesos que no dejan llamadas en
espera. A estos procesos los llamamos procesos iterativos, en contraposición con
los procesos recursivos que generan los programas vistos hasta ahora.
La siguiente versión de la función factorial está escrita de forma que el proceso generado es
iterativo y no deja llamadas en espera.
(define (factorial-iter n)
(fact-iter-aux n n))
(factorial-iter 4)
(factorial-iter-aux 4 4)
(factorial-iter-aux 12 3)
(factorial-iter-aux 24 2)
(factorial-iter-aux 24 1)
24
(longitud 'abcdef)
(longitud-iter 'abcdef 0)
(longitud-iter 'bcdef 1)
(longitud-iter 'cdef 2)
(longitud-iter 'def 3)
(longitud-iter 'ef 4)
(longitud-iter 'f 5)
(longitud-iter "" 6)
6