Está en la página 1de 4

TEMA: RECURSIVIDAD

________________________________________________________________________________

Recursividad
En programación, una función es recursiva si en el ámbito de esa función hay una llamada a
sí misma.
Para decidir hacer un programa recursivo se deben de tener al menos dos cosas muy claras:
1. El paso base: Esta es la clave para terminar la recursión, es cuando deja de hacer
llamadas a la función recursiva y hace evaluaciones devolviendo los resultados. Además se
debe asegurar de que es posible entrar a este paso.
2. El paso recursivo: Es la parte de la definición que hace llamadas a esa misma función y
que es la causante de las inserciones en la pila, almacenando en cada una de las llamadas,
información del programa, del estado de sus variables locales y globales.
Frecuentemente tanto el paso base como el paso recursivo, se encuentran en una sentencia
condicional if, pero por supuesto que es posible usar cualquier otra sentencia de control,
dependiendo de las necesidades particulares del problema.

Ejercicios
1) Programa para calcular el factorial de un número.

#include<iostream.h>

int factorial(int n);

void main()
{
int num;
do{
cout<<"Ingrese numero :";
cin>>num;
}while(num<=0);
cout<<"El factorial es : "<<factorial(num)<<endl;
}

int factorial(int n)
{
if(n==0) return 1;
else return n*factorial(n-1);
}

2) Programa para calcular la potencia de x elevado a la n. x real y n>0.

#include<iostream.h>

float potencia(float x, int n);

void main()
{
float x;
int n;
cout<<"Valor de x:";
cin>>x;

___________________________________________________________________________
Docente: Ing. Marcelino Torres Villanueva 1
TEMA: RECURSIVIDAD
________________________________________________________________________________

do{
cout<<"valor de n :";
cin>>n;
}while(n<=0);
cout<<"La Potencia es : "<<potencia(x,n)<<endl;
}

float potencia(float x, int n)


{
if(n==0) return 1;
else return x*potencia(x,n-1);
}

3) Calcular el enésimo término de la serie de fibonacci.

#include<iostream.h>

long fibo(int n);


void main()
{
int n;
do{
cout<<"Numero de Termino :";
cin>>n;
}while(n<=0);
cout<<"El termino "<<n<<" es : "<<fibo(n)<<endl;
}

long fibo(int n)
{
if(n==1 || n==2) return 1;
else return fibo(n-1)+fibo(n-2);
}

4) Programa para ingresar un número y lo reporte al revés

#include<iostream.h>

void reporteReves(int n);

void main()
{
int num;
do{
cout<<"Ingrese numero : ";
cin>>num;
}while(num<=0);
reporteReves(num);
}

___________________________________________________________________________
Docente: Ing. Marcelino Torres Villanueva 2
TEMA: RECURSIVIDAD
________________________________________________________________________________

void reporteReves(int n)
{
if(n>0)
{
cout<<n%10;
reporteReves(n/10);
}
}

5) Programa para convertir un número de base 10 a base b (entre 2 y 9)

#include<iostream.h>

void conversion(int n,int b);

void main()
{
int num,b;
do{
cout<<"Ingrese numero en base 10 : ";
cin>>num;
}while(num<=0);
do{
cout<<"Base a la que desea convertir : ";
cin>>b;
}while(b<2 || b>9);
conversion(num,b);
}

void conversion(int n, int b)


{
if (n< b) cout<<n;
else
{
conversion(n/b,b);
cout<<n%b;
}
}

6) Calcular la suma de los elementos de un vector de n elementos.

#include<iostream.h>

float suma(float x[], int n);

void main()
{
float a[]={1,5,9,10};
int n=4;

___________________________________________________________________________
Docente: Ing. Marcelino Torres Villanueva 3
TEMA: RECURSIVIDAD
________________________________________________________________________________

cout<<"La suma es : "<<suma(a,n);


}

float suma(float x[], int n)


{
if(n==0) return 0;
else return x[n-1]+suma(x,n-1);
}

Ejercicios propuestos
Usando funciones recursivas resolver:

1. Calcular la longitud de una cadena.


2. Calcule el número de veces que aparece una letra en una cadena.
3. Calcular la suma de los n primeros números pares.
4. Calcular la suma de los n primeros números impares.
5. Calcular el producto de los dígitos de un numero
6. Verificar si todos los dígitos de un numero son iguales
7. Verificar si los dígitos de un numero estan en escalera ascendentemente
8. Calcular el m.c.d. de dos números usando el algoritmo de Euclides.
9. Factorice por medio de la recursion. Por ejemplo si el numero es 8 sus factores
seran 2x2x2
10. En un cuadrado cuyo lado es a, se unen los puntos medios de sus 4 lados,
formandose otro cuadrado cuyos puntos medios se unen tambien formando otro
cuadrado, y asi sucesivamente. Calcular la suma de los perimetros de los n
primeros cuadrados asi formados.
11. Calcule el m.c.,m de dos números.
12. En un vector de n elementos calcular el mayor de los elementos del Vector.
13. En un vector de n elementos calcular el producto de todos sus elementos.
14. Calcular la suma de los digitos de un numero.
15. Buscar un elemento en un vector de n elementos. Usando búsqueda secuencial.
16. Buscar un elemento en un vector de n elementos. Usando búsqueda binaria.
17. Contar el número de vocales que existe en una cadena.

___________________________________________________________________________
Docente: Ing. Marcelino Torres Villanueva 4

También podría gustarte