Está en la página 1de 7

Universidad de El Salvador

Facultad Multidisciplinaria de Occidente


Departamento de Ingeniería y Arquitectura
Estructura de Datos
Docente: Ing. Carlos Stanley Linares Paula
Instructor: Br. Juan Carlos Zepeda Abrego

GUÍA #5 – RECURSIVIDAD

Objetivo: Conocer los conceptos, usos e importancia de la


recursividad en el lenguaje C.

Una función recursiva es aquella que se define a partir de ella


misma.

Las funciones recursivas se definen:

1. caso base: son casos simples. Si la función es llamada con el caso base la
función simplemente devuelve un resultado.

2. caso recursivo: la función es llamada con un problema mas complejo. Para


hacer factible la recursividad este ́ultimo debe parecerse al problema original. El
paso de recursividad puede dar como resultado muchas llamadas recursivas a la
función con problemas mas sencillos que el original. A fin de que la recursividad
en forma eventual se termine, cada vez que la función se llame a si misma debe
ser sobre una versión ligeramente mas sencilla que el problema original. Esta
secuencia de problemas mas pequeños deben de converger en el paso base.

Funcionamiento

- Se descompone el problema en problemas de menor complejidad (algunos de


ellos de la misma naturaleza que el problema original).

- Se resuelve el problema para, al menos, un caso base.

- Se compone la solución final a partir de las soluciones parciales que se van


obteniendo.
Un problema clásico es el factorial de un número.
Ejemplo #2: Elevar 5 a una potencia n.
Ejemplo #3: Suma de los primeros n números.
Ejercicios a Realizar:

1. Construya una función que convierta un número decimalen una cadena que
represente el valor del número en hexadecimal (base 16). A continuación,
generalice la función para convertir un número decimal en un número en base B
(con B<10).

Recordatorio: El cambio de base se realiza mediante divisiones sucesivas por 16


en las cuales los restos determinan los dígitos hexadecimales del número según la
siguiente correspondencia:
2. Implemente, tanto de forma recursiva como de forma iterativa, una función que
permitan calcular el número de combinaciones de n elementos tomados de m en
m. Realice dos versiones de la implementación iterativa, una aplicando la fórmula
y otra utilizando una matriz auxiliar (en la que se vaya construyendo el triángulo
de Pascal).

3. Implemente, tanto de forma recursiva como de forma iterativa, una función que
nos devuelva el máximo común divisor de dos números enteros utilizando el
algoritmo de Euclides.
4. Salida de un laberinto: Se trata de encontrar un camino que nos permita salir
de un laberinto definido en una matriz NxN. Para movernos por el laberinto, sólo
podemos pasar de una casilla a otra que sea adyacente a la primera y no esté
marcada como una casilla prohibida (esto es, las casillas prohibidas determinan
las paredes que forman el laberinto).

También podría gustarte