Está en la página 1de 7

UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓNFACULTAD

DE INGENIERÍA MECÁNICAY ELÉCTRICA

Reporte 3

“Algoritmos Recursivos”.

Algoritmos computacionales.

DOCENTE. JESSICA NATALIA MARTINEZ BALDERAS

DILAN MACKOLIN OVALLE GARCIA

MATRICULA. 1736894

CARRERA. IAS

GRUPO. 003
ALGORITMOS RECURSIVOS.
Un algoritmo recursivo es un algoritmo que expresa la solución de un problema en
términos de una llamada a sí mismo. La llamada a sí mismo se conoce como
llamada recursiva o recurrente.

Generalmente, si la primera llamada al subprograma se plantea sobre un


problema de tamaño u orden N, cada nueva ejecución recurrente del mismo se
planteará sobre problemas, de igual naturaleza que el original, pero de un tamaño
menor que N. De esta forma, al ir reduciendo progresivamente la complejidad del
problema que resolver, llegará un momento en que su resolución sea más o
menos trivial (o, al menos, suficientemente manejable como para resolverlo de
forma no recursiva). En esa situación diremos que estamos ante un caso base de
la recursividad.
Las claves para construir un subprograma recurrente son:

 Cada llamada recurrente se debería definir sobre un problema de


menor complejidad (algo más fácil de resolver).
 Ha de existir al menos un caso base para evitar que la recurrencia sea
infinita.

Es frecuente que los algoritmos recurrentes sean más ineficientes en


tiempo que los iterativos, aunque suelen ser mucho más breves en
espacio.
DISEÑO DE UN PROGRAMA RECURSIVO

Diseño de funciones recursivas

Para escribir un algoritmo de forma recursiva es necesario intentar

transformar el problema en otro similar pero más simple, así

como encontrar una solución directa para los casos triviales.


Es necesario, pues:

 Identificar y formular el caso base o


condición de salida del cual conocemos la
solución directamente.
 Formular el caso general que debe poder resolverse
en función del caso base y una transformación del
caso general hacia uno más sencillo.

Entrada: cantidad Y un conjunto. de tipos de moneda

Salida: lista de pares (número, tipo de moneda)

subprograma Pagar (cantidad, conjunto de monedas)

escribir (moneda mayor del conjunto, cantidad división entera moneda mayor

conjunto) si hay más tipos de moneda en el conjunto,

Pagar (cantidad restante, subconjunto. de tipos de moneda)

fin subprograma

donde cantidad restante es:

cantidad - moneda mayor conjunto* (cantidad división entera moneda mayor

conjunto) subconjunto.
De tipos monedas es: conjunto. de monedas - moneda mayor conjunto
PILAS, COLAS Y LISTAS EN LOS ALGORITMOS RECURSIVOS

PILA
Estructura de datos secuencial con acceso restringido. La principal característica de esta estructura
es que el acceso tiene la propiedad “LIFO” (Last in, first out).
Las principales operaciones sobre una pila son:

 Push ( item ) Inserta un elemento en el tope de la pila.

 Top ( ) Consulta el elemento del tope de la pila.

 Pop ( ) Extrae el elemento del tope de la pila.


Aplicaciones de la pila

 Evaluador de expresiones aritméticas infijas.

 Llamadas a procedimientos.

 Recursión.

COLA
Estructura de datos secuencial con acceso restringido. La principal característica
de esta estructura es que el acceso tiene la propiedad “FIFO” (First in, first out).

Las principales operaciones sobre una cola son:


 Enqueue ( item ) Inserta un elemento al final de la cola.

 Back ( ) Consulta el ultimo elemento de la cola.

 Front ( ) Consulta el primer elemento de la cola.

 Dequeue ( ) Extrae el primer elemento de la cola.


 Listas enlazadas
En una estructura del tipo lista enlazada cada nodo contiene una referencia
al siguiente nodo (alternativamente es posible que contenga una
referencia al nodo anterior, en las listas doblemente
encadenadas), y un con junto de atributos extra específicos del
nodo en cuestión:

Estructura Nodo
Dato: entero
Siguiente: Nodo
Fin estructura

Una función que opere de forma recursiva sobre una lista enlazada, deberá
procesar el nodo actual y pasar como parámetro el nodo siguiente. La condición
de salida en este caso se dará cuando lleguemos a un nodo de valor null, que
indicará el final de la lista:

función procesaLista(nodo)
si nodo <> null
imprime ( nodo.dato )
procesaLista ( nodo.siguiente )
fin si
fin función
EJEMPLO DE UN ALGORITMO RECURSIVO

El ejemplo de algoritmo recursivo es el de una función para calcular la


factorial de un número. La factorial de un número es el resultado de multiplicar
dicho número por todos los precedentes, hasta llegar a 1. Por ejemplo, factorial
(3) = 3 * 2 * 1. Si observamos que la factorial de un número es equivalente al
producto de dicho número por la factorial del número precedente:
Factorial (3) =3 * factorial (2)
Podemos plantear una implementación recursiva:

función factorial(n)
si n = 1
devolver 1
sino
devolver n * factorial (n – 1)
fin si
fin función

En este caso, la sentencia

si n = 1 devolver 1

Es la condición de salida o caso base que evita que la función se llame a sí


misma indefinidamente.
BIBLIOGRAFIA

https://es.wikipedia.org/wiki/Recursi%C3%B3n_(ciencias_de_computaci
%C3%B3n)

http://formacion.desarrollando.net/cursosfiles/formacion/curso_454/deda-
03.pdf

http://www.webdelprofesor.ula.ve/ingenieria/jesuspangulo/A2017/PR3/
clase03.pdf

https://uniwebsidad.com/libros/algoritmos-python/capitulo-18/
algoritmos-recursivos-y- algoritmos-iterativos

También podría gustarte