0% encontró este documento útil (0 votos)
194 vistas4 páginas

Recursion C++

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 4

TEMA: RECURSIVIDAD

________________________________________________________________________________

Recursividad
En programacin, una funcin es recursiva si en el mbito de esa funcin 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 recursin, es cuando deja de hacer
llamadas a la funcin recursiva y hace evaluaciones devolviendo los resultados. Adems se
debe asegurar de que es posible entrar a este paso.
2. El paso recursivo: Es la parte de la definicin que hace llamadas a esa misma funcin y
que es la causante de las inserciones en la pila, almacenando en cada una de las llamadas,
informacin 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 nmero.

#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 ensimo trmino 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 nmero y lo reporte al revs

#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 nmero 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 nmero de veces que aparece una letra en una cadena.
3. Calcular la suma de los n primeros nmeros pares.
4. Calcular la suma de los n primeros nmeros impares.
5. Calcular el producto de los dgitos de un numero
6. Verificar si todos los dgitos de un numero son iguales
7. Verificar si los dgitos de un numero estan en escalera ascendentemente
8. Calcular el m.c.d. de dos nmeros 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 nmeros.
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 bsqueda secuencial.
16. Buscar un elemento en un vector de n elementos. Usando bsqueda binaria.
17. Contar el nmero de vocales que existe en una cadena.

___________________________________________________________________________
Docente: Ing. Marcelino Torres Villanueva 4

También podría gustarte