docsity-manzaneo-y-lotizacion para habilitacopm urbana
Estructura de Datos - Unidad II Recursividad
1. Ingeniería en Sistemas Computacionales
Estructura de Datos
Unidad II: Recursividad
Este material está desarrollado para la asignatura Estructura de Datos AED-1026, de la carrera de Ingeniería en
Sistemas Computacionales, plan de estudios ISIC-2010-224.
2. Unidad II: Recursividad
Temario de la Unidad
Competencia de la Unidad
• Comprender y aplicar la recursividad como herramienta de programación
para el manejo de las estructuras de datos.
3. 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.
4. • 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
...
}
5. 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.
6. 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.
7. #include <cstdlib>
#include <iostream>
using namespace std;
void recursivo (int num) {
if (num>0) {
cout << endl << num;
recursivo(num-1);
}
}
int main(int argc, char *argv[])
{
int n;
cout << "Introduzca numero n: ";
cin >> n;
recursivo(n);
system("pause");
return 0;
}
Ejercicio: Implementar un método recursivo que imprima un número en forma
descendente de uno en uno.
8. • 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.
9. #include <cstdlib>
#include <iostream>
using namespace std;
long factorial (int n)
{
if (n > 1) {
long resultado = n * factorial(n - 1);
return resultado;
}
}
int main()
{
int n;
cout << "Introduzca numero n: ";
cin >> n;
cout <<endl << n << "! = " << factorial(n)
<< endl;
system("pause");
return 0;
}
10. • Tarea: 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.