Estructura de Datos - Unidad II Recursividad
-
Upload
jose-antonio-sandoval-acosta -
Category
Engineering
-
view
63 -
download
5
Transcript of Estructura de Datos - Unidad II Recursividad
Ingeniería en Sistemas Computacionales
Estructura de DatosUnidad 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.
Unidad II: RecursividadTemario 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.
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.
• 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...
}
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.
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.
#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.
• 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.
#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;}
• 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.