Está en la página 1de 13

ANALISIS DE ALGORITMO RECURSIVO E ITERATIVO

FERNANDO JOSE VASQUEZ CUESTA

YEINER JOSE CARPINTERO

CARLOS FRANCO

JUAN CARLOS NAVARRO

CIENCIAS E INGENIERIA
INGENIERIA DE SISTEMAS E INFORMACION

UNIVERIDAD DEL SINU ELIAS BECHARA ZAINUM

MONTERIA – CORDOBA

2020
INTRODUCCION

Mediante la realización del siguiente trabajo se encontrarán diferentes conceptos de

recursividad e iteratividad, sus funciones, características, ventajas y desventajas para poder

adquirir los conocimientos necesarios sobre el tema y comprende mejor cada concepto.

Se busca dar a conocer los criterios necesarios para la medición de algoritmos, con el fin de

que puedan ser aplicados en forma general y así determinar el grado de eficiencia, según el

problema que se presente.


DEFINICIONES.

 Algoritmos Recursivos
los algoritmos recursivos son aquellos que contienen llamados a sí mismos de forma finita
y se utilizan mayormente en problemas relacionados con las áreas matemáticas y
fundamentalmente cuando el problema está definido en términos de sí mismo. Cabe resaltar
que la recursividad es una forma elegante, simple, estructurada, modular y clara de resolver
problemas complejos en pocas líneas de código, por lo tanto, resulta de gran utilidad.
Asimismo, un punto importante de la recursividad es que usa recursos del sistema, tales
como el procesador y la pila del sistema, según el tipo de problema en cantidades variables.

Definición de recursividad:
En general que un sistema sea subsistema de otro más grande, y por otro, puede estar
compuesto de sistemas menores. La recursividad representa la jerarquización de todos
los sistemas existentes es el concepto unificador de la realidad y de los objetos.

 Algoritmos iterativos
Los algoritmos iterativos son aquellos que funcionan a partir de procedimientos cíclicos.
Dichos algoritmos cuentan con una secuencia de instrucciones que se realizan mediante una
estructura llamada ciclo, la cual consta de: Un valor inicial, Un valor final, Un incremento.

Definición de iteratividad:
Un método iterativo trata de resolver un problema matemático mediante aproximaciones
sucesivas a la solución, empezando desde una estimación inicial. Esta aproximación
contrasta con los métodos directos, que tratan de resolver el problema de una sola vez.
TIPOS DE ALGORITMOS RECURSIVOS E ITERATIVOS.

TIPOS DE RECURSIVIDAD.

➤ Directa vs. Indirecta

➭ Directa: El algoritmo recursivo se llama a sí mismo.

➭ Indirecta: El algoritmo recursivo llama a otro que provoca eventualmente una

llamada al original.

➤ Final vs. No final

➭ Final: Al finalizar la llamada recursiva, no queda ninguna acción por ejecutar

salvo retornar.

➭ No final: Después de la llamada recursiva quedan acciones por realizar

TIPOS DE ITERATIVIDAD.

Este tipo de estructuras, son las que nos permiten ejecutar varias veces un conjunto
determinado de instrucciones, a esta repetición se le conoce con el nombre de ciclos. De
manera general existen 3 tipos de estructuras cíclicas, Do While (Repeat), While do
(While), For.

1. While Do (While - hacer mientras)

Estructura iterativa que indica un conjunto de instrucciones que se deben de repetir


mientras que la respuesta a la expresión que se coloca dentro del símbolo de decisión sea
VERDADERA, por lo tanto, cuando la respuesta a la condición sea FALSA se continúa
con la siguiente instrucción es decir sale del ciclo.
2. Do While (Repeat – Repetir – Hasta)

Estructura iterativa que indica un conjunto de instrucciones que se deben repetir mientras
que la respuesta a la condición colocada en el lugar del símbolo de decisión sea FALSA,
por lo tanto, cuando la respuesta sea VERDADERA se termina de ejecutar el ciclo. Esta
estructura se ejecuta siempre al menos una vez, debido a que las instrucciones para ejecutar
se encuentran dentro del ciclo antes de evaluar la expresión.

3. For (Hacer para... hasta ...)

Esta estructura iterativa indica un rango de valores exacto que una variable tendrá para
repetir un conjunto de instrucciones. Consta de las siguientes partes: Un valor de inicio para
la variable, el incremento o decremento de los valores de la variable y por último la
comparación del valor de la variable con el fin del rango establecido. Las instrucciones para
ejecutar que se encuentran dentro del ciclo se ejecutarán mientras la respuesta a la
expresión colocada en el símbolo de decisión sea VERDADERA de lo contrario el ciclo se
termina. Aun así, el ciclo se puede ejecutar infinidad de veces debido a la falta de una
instrucción que permita incrementar o decrementar el valor de la variable a evaluar.
También es posible que nunca se ejecute el ciclo debido a que la asignación de la variable
para evaluar sea un valor que de cómo resultado: verdadero en la condición.
IMPLEMENTACION.

Implementación recursiva

➤ Intentar plantear la solución del problema en función de la solución de un

subproblema del mismo tipo.

➭ Factorial: n! = n ∗ (n−1)!

➭ Sumatorio: ∑
n
i=1
i = n+∑
n−1
i=1
i
➭ Máximo: max´ i:1...n
{v[i]} = maximo(v[n],max´ i:1...n−1
{v[i]})
➤ Encontrar uno o varios casos en los que la solución sea trivial: casos base ≡

condición/es de parada.

➭ Factorial: 0! = 1 y 1! = 1

➭ Sumatorio: ∑
1
i=1
i=1
➭ Máximo: max´ i:1...1
{v[i]} = v[1]
Implementación iterativa

Ejemplo: Sumatorio de 1 a N f = 0; i = 1;

while (i <= N)

f = f + i;

i = i + 1;

ƒ En lenguaje while:

f:= 0; i := 1;

while (i <= N) → f := f + i;

i:= i + 1;
CARACTERISTICAS.

Características de recursividad.

Un algoritmo recursivo consta de una parte recursiva, otra iterativa o no recursiva y una


condición de terminación. La parte recursiva y la condición de terminación siempre existen.
En cambio, la parte no recursiva puede coincidir con la condición de terminación. Algo
muy importante a tener en cuenta cuando se use la recursividad es que es necesario
asegurarnos que llega un momento en que no hacemos más llamadas recursivas. Si no se
cumple esta condición el programa no parará nunca.

Características del proceso iterativo.

 El proceso iterativo se basa en producir sucesivos prototipos (sistemas ejecutables)


que van evolucionando desde requerimientos muy simples hasta los completos.
 El desarrollo evolutivo de los prototipos facilita afrontar los problemas de mayor
riesgo al principio.
 A lo largo del desarrollo se van mostrando prototipos reales a los usuarios y
clientes:
1. „ El usuario se enfrenta al producto de forma real.
2. „ El cliente se hace colaborador del proyecto.
3. „ El equipo está continuamente motivado por objetivo próximos.
4. „ La integración de los componentes es gradual.
5. „ Los progresos se evalúan de forma tangible y no sobre papel.
VENTAJAS Y DESVENTAJAS.

Ventajas e inconvenientes de recursividad

La principal ventaja es la simplicidad de comprensión y su gran potencia, favoreciendo la


resolución de problemas de manera natural, sencilla y elegante; y facilidad para comprobar
y convencerse de que la solución del problema es correcta.

El inconveniente es la ineficiencia tanto en tiempo como en memoria, dado que para


permitir su uso es necesario transformar el programa recursivo en otro iterativo, que utiliza
bucles y pilas para almacenar las variables.

Ventajas e inconvenientes de iteración.

 Ventajas
1. La ventaja de este método es que es muy accesible a los clientes no técnicos
2. . La ventaja de este método es más preciso y conciso

 Desventaja
1. La principal dificultad es que a menudo se requiere un número excesivo de
escenarios para describir de forma completa un caso de uso, y que también es difícil
de describir requerimientos negativos
2. El inconveniente es que suelen ser difíciles de comprender por los usuarios no
técnicos.
RECURSIVIDAD VS ITERACION.

La mayoría de los algoritmos pueden expresarse tanto de forma iterativa como de forma
recursiva. A la hora de implementar un algoritmo, surge la duda respecto a la conveniencia
de utilizar una versión u otra.

A menudo los programadores acostumbrados al uso de lenguajes imperativos como C o


Java descartan el uso de funciones recursivas, aludiendo a razones de eficiencia o memoria.
Sin embargo, dichas deficiencias pueden minimarse a menudo.

Existen distintos factores a considerar; a continuación, enumeramos los más importantes:

▪ Conveniencia

- por el lenguaje de programación utilizado

Algunos lenguajes se benefician del uso de funciones recursivas respecto a las funciones
iterativas. Por ejemplo, los llamados lenguajes funcionales, como Lisp, Scheme o Haskell,
están orientados y optimizados para el trabajo con funciones recursivas.

- por la definición del problema

Hay problemas cuya definición y/o solución son inherentemente recursivas y una solución
iterativa resultaría demasiado complicada. Lo contrario también es posible.

▪ Eficiencia

En general la versión iterativa de una función siempre es más eficiente que la versión
recursiva, tanto en términos de velocidad de ejecución como de memoria utilizada:

- Velocidad de ejecución:

En la versión recursiva, el hecho de que la función se llame a sí misma incurre en tiempo


extra de proceso: La llamada a una función supone un coste extra en términos de tiempo de
procesador en comparación con el coste que supone reiniciar una nueva iteración de un
bucle: es necesario almacenar los parámetros pasados (si los hay) en la pila, así como la
dirección de retorno, etc.

No obstante, si el compilador soporta las funciones recursivas finales y podemos escribir el


algoritmo como tal, la eficiencia se pone a la par de la versión iterativa.

- Uso de memoria:

En la versión recursiva, la llamada a la función requiere del uso de la pila para almacenar
los parámetros pasados (si los hay), dirección de retorno, resultado, etc. Si el nivel de
recursión puede ser muy elevado, el uso de memoria puede ser considerable o incluso
prohibitivo. No obstante, algunos algoritmos, en su versión iterativa, requieren de
estructuras de datos auxiliares que son implícitas a la versión recursiva del algoritmo al
pasar los datos como parámetros en la pila, de modo que consumen también mucha
memoria, al nivel de la versión recursiva.

▪ Sencillez

En ocasiones es mucho más sencillo escribir la versión recursiva de un algoritmo que la


versión iterativa, y viceversa. La elección de una u otra alternativa puede basarse en este
hecho. En general, la versión recursiva de una función es mucho más elegante y sencilla a
nivel de cantidad de código requerido que la versión iterativa.

▪ Intuitividad.

El planteamiento iterativo de una función resulta a menudo más intuitivo que el recursivo, y
viceversa. Es posible favorecer la legibilidad y comprensibilidad del código respecto a la
eficiencia si ésta no es un factor determinante.
CONCLUSIÓN

Los algoritmos es un concepto fundamental en matemáticas y en computación. Es una


alternativa diferente para implementar estructuras de para la solución de problemas (ciclos).
Los módulos se hacen llamadas recursivas.
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 además como se pudo notar la recursividad también se puede trabajar mediante
pilas, así como también se mencionó algunos algoritmos para utilizar la recursividad el cual
se utilizó la de calcular un numero factorial es un ejemplo más común que se encontró.
Esperando que el trabajo contenga la información necesaria para asi cumplir con las
características que se van a calificar.
REFERENCIAS.

Berzal, F. (2010). “Tipos de Eficiencia de un algoritmo”. Recuperado 8-8-2010 de: URL

= http://elvex.ugr.es/decsai/c/apuntes/algoritmos.pdf

Bisbal, J. (2010). “Manual de algorítmica Recursividad, complejidad, y diseño de

algoritmos”. Editorial UOC. Barcelona España, diciembre 2009. Recuperado 15-8-2010

de URL =

http://books.google.co.cr/books?id=2sSvS0pDfpAC&printsec=frontcover&hl=en#v=one

page&q&f=false.

http://informatica.uv.es/iiguia/MP/docs/tema5.pdf

http://juanfc.lcc.uma.es/EDU/PM/4.Recursividad.pdf Gupta, P. (2010).

https://www.uv.mx/personal/clgarcia/files/2012/10/IV-Algoritmos-iterativos.pdf

También podría gustarte