Instituto Tecnológico Superior de Felipe Carrillo Puerto 
INGENIERÍA EN SISTEMAS COMPUTACIONALES 
ESTRUCTURA DE DATOS 
Informe técnico de la unidad 2 
Recursividad 
DOCENTE 
C.Dr. Niels Henryk Aranda Cuevas 
ALUMNO 
Sergio Jesús Sabido Díaz 
Felipe Carrillo Puerto, Q.Roo. a 2 de octubre de 2014
RECURSIVIDAD 
La recursividad, es un concepto bastante importante y bien básico de la programación. 
Sin embargo es bastante difícil de asimilar al principio. Se supone que es algo que se va 
entendiendo con práctica y tiempo 
"es una función que se llama así misma" el objetivo de esta unidad fue comprender 
que es la recursividad y posteriormente programarla. 
Es importante mencionar que cuando existe recursividad me debo olvidar de los ciclos, 
¿Por qué? Por que la recursividad trabaja con secuencias . 
Para ejemplo de que es la recursividad, seria codificar un programa que te genere el 
factorial de un número y la serie Fibonacci.
EJEMPLO 
Obtener el factorial de un número, programa echo en C++ 
#include <iostream> 
using namespace std; 
int factorial(int n); 
int main(int argc, char *argv[]) { 
int p; 
cout << "este programa sirve para sacar el factorial de un numero 
entero"<<endl<<endl; 
cout <<"Por favor ingrese su numero"<<endl; 
cin >> p; 
cout <<"el resultado es: "<<factorial(p); 
return 0; 
} 
int factorial(int n){ 
if(n==0){ 
return(1); 
} 
else { 
return(n*factorial(n-1)); 
} 
}
EJEMPLO 2 
Serie Fibonacci, programa echo en C++ 
#include <iostream> 
using namespace std; 
int fibonacci(int a); 
int main(int argc, char *argv[]) { 
int p; 
cout <<"Este programa funciona como la serie fibonacci"<<endl<<endl; 
cout <<"por favor ingrese un numero"<<endl<<endl; 
cin >> p; 
cout <<"El resultado de la serie es: "<<endl<<fibonacci(p); 
return 0; 
} 
int fibonacci(int a){ 
if((a==1)||(a==2)){ 
return (1); 
} 
else{ 
return(fibonacci(a-1)+fibonacci(a-2)); 
} 
}
CONCLUSIÓN 
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. 
En esta unidad se pudo observar que lo anterior es importante por que permite que un programador ver que existen 
distintas maneras de programar secuencias y no solamente con ciclos, la recursividad puede simplificar código y hacer más 
estética y legible nuestro programa, es importante mencionar que los programas anteriores son claros ejemplos de cómo se 
utiliza la recursividad en programación siendo así una herramienta importante a la hora de generar softwares con problemáticas 
similares, llevamos a cabo el razonamiento lógico para poder entender el problema y posteriormente codificarlo, explicamos 
cada uno de ellos,

RECURSIVIDAD C++

  • 1.
    Instituto Tecnológico Superiorde Felipe Carrillo Puerto INGENIERÍA EN SISTEMAS COMPUTACIONALES ESTRUCTURA DE DATOS Informe técnico de la unidad 2 Recursividad DOCENTE C.Dr. Niels Henryk Aranda Cuevas ALUMNO Sergio Jesús Sabido Díaz Felipe Carrillo Puerto, Q.Roo. a 2 de octubre de 2014
  • 2.
    RECURSIVIDAD La recursividad,es un concepto bastante importante y bien básico de la programación. Sin embargo es bastante difícil de asimilar al principio. Se supone que es algo que se va entendiendo con práctica y tiempo "es una función que se llama así misma" el objetivo de esta unidad fue comprender que es la recursividad y posteriormente programarla. Es importante mencionar que cuando existe recursividad me debo olvidar de los ciclos, ¿Por qué? Por que la recursividad trabaja con secuencias . Para ejemplo de que es la recursividad, seria codificar un programa que te genere el factorial de un número y la serie Fibonacci.
  • 3.
    EJEMPLO Obtener elfactorial de un número, programa echo en C++ #include <iostream> using namespace std; int factorial(int n); int main(int argc, char *argv[]) { int p; cout << "este programa sirve para sacar el factorial de un numero entero"<<endl<<endl; cout <<"Por favor ingrese su numero"<<endl; cin >> p; cout <<"el resultado es: "<<factorial(p); return 0; } int factorial(int n){ if(n==0){ return(1); } else { return(n*factorial(n-1)); } }
  • 4.
    EJEMPLO 2 SerieFibonacci, programa echo en C++ #include <iostream> using namespace std; int fibonacci(int a); int main(int argc, char *argv[]) { int p; cout <<"Este programa funciona como la serie fibonacci"<<endl<<endl; cout <<"por favor ingrese un numero"<<endl<<endl; cin >> p; cout <<"El resultado de la serie es: "<<endl<<fibonacci(p); return 0; } int fibonacci(int a){ if((a==1)||(a==2)){ return (1); } else{ return(fibonacci(a-1)+fibonacci(a-2)); } }
  • 5.
    CONCLUSIÓN La primerallamada 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. En esta unidad se pudo observar que lo anterior es importante por que permite que un programador ver que existen distintas maneras de programar secuencias y no solamente con ciclos, la recursividad puede simplificar código y hacer más estética y legible nuestro programa, es importante mencionar que los programas anteriores son claros ejemplos de cómo se utiliza la recursividad en programación siendo así una herramienta importante a la hora de generar softwares con problemáticas similares, llevamos a cabo el razonamiento lógico para poder entender el problema y posteriormente codificarlo, explicamos cada uno de ellos,