Está en la página 1de 13

Instituto Tecnológico Superior de Guasave

Ingeniería en Sistemas Computacionales


Estructura de Datos
Unidad II: Recursividad
Mtro. José Antonio Sandoval Acosta
Retícula ISIC-2010-224: Programa: AED-1026/2016

Itsguasave.edu.mx
ESTRUCTURA DE DATOS

Competencia de la Unidad
• Aplica la recursividad en la solución de problemas valorando su pertinencia
en el uso eficaz de los recursos.
ESTRUCTURA DE DATOS
Recursividad
• Primero debemos decir que la recursividad no es una estructura de datos, sino
que es una técnica de programación que nos permite que un bloque de
instrucciones se ejecute n veces. Remplaza en ocasiones a estructuras
repetitivas.
• Recurrencia, recursión o recursividad es la forma en la cual se especifica un
proceso basado en su propia definición. Siendo un poco más precisos, y para
evitar el aparente círculo sin fin en esta definición:
 Una función recursiva es aquella que se llama a sí misma, bien
directamente o bien indirectamente a través de otra función. La
recursividad es un tópico importante examinado frecuentemente en cursos
en los que se trata de resolución de algoritmos y en cursos relativos a
Estructuras de Datos.
ESTRUCTURA DE DATOS
• Una función o procedimiento que tiene sentencias entre las que se encuentra
al menos una que llama a la propia función se dice que es recursiva. Así, la
organización recursiva de una función funcion1 sería la siguiente:

void funcion1(parámetros)
{
...
funcion1(parámetros); // llamada recursiva
...
}
ESTRUCTURA DE DATOS
Condición de fin de la recursividad

• Cuando se implementa una función recursiva será preciso considerar una


condición de terminación, ya que en caso contrario la función continuaría
indefinidamente llamándose a sí misma y llegaría un momento en que la pila
de memoria que registra las llamadas se desbordaría.
ESTRUCTURA DE DATOS
Ejercicio: Implementar un método que imprima un número en forma
descendente de uno en uno.
Una vez hecho el primer programa implementar un método recursivo que
imprima un número en forma descendente de uno en uno.
ESTRUCTURA DE DATOS
Ejercicio: Implementar un método recursivo que imprima un número en forma
descendente de uno en uno concluyendo con el cero.

#include <cstdlib> int main(int argc, char *argv[])


#include <iostream> {
using namespace std; int n;
void recursivo (int num) { cout << "Introduzca numero n: ";
if (num>=0) { cin >> n;
cout << endl << num; recursivo(n);
recursivo(num-1); system("pause");
} return 0;
} }
ESTRUCTURA DE DATOS
• Ejercicio: Realizar un programa que calcule el factorial de un número,
• Primero debe hacer un programa que haga el cálculo de la forma
tradicional, es decir, utilizando ciclos.
• Después hacer un segundo programa que en lugar de usar una estructura
cíclica o iterativa debe hacer uso de una función recursiva.
ESTRUCTURA DE DATOS
#include <cstdlib>
#include <iostream>
using namespace std;

long factorial (int n) int main()


{ {
if (n > 1) { int n;
long resultado = n * factorial(n - 1); cout << "Introduzca numero n: ";
return resultado; cin >> n;
} cout <<endl << n << "! = " << factorial(n)
} << endl;
system("pause");
return 0;
}
ESTRUCTURA DE DATOS
• Ejercicio: Desarrolle un programa que muestre en pantalla la ejecución de la
serie de números del código ASCII, cabe recordar que los primeros 32 números
no son imprimibles.
• El programa debe realizarse primero utilizando ciclos y después utilizando
recursividad.
ESTRUCTURA DE DATOS
• Tarea: Desarrolle un programa recursivo que despliegue la tabla de multiplicar
de un número dado, los factores deben ir del 1 al 10

• Adicionalmente calcular al programa ya terminado la Complejidad en el


tiempo y la complejidad en el espacio.
ESTRUCTURA DE DATOS
• Examen: Desarrolle un programa que imprima los números par que se
encuentran del 0 al 100, debe hacerse una rutina recursiva en lugar de un ciclo
para realizar este proceso.
ESTRUCTURA DE DATOS
Bibliografía

• Joyanes, Zahonero. Estructura de Datos en C++. McGraw Hill. Madrid, España.


2007. ISBN: 978-84-481-5645-9.

También podría gustarte