Recursion C++
Recursion C++
Recursion C++
________________________________________________________________________________
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>
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);
}
#include<iostream.h>
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;
}
#include<iostream.h>
long fibo(int n)
{
if(n==1 || n==2) return 1;
else return fibo(n-1)+fibo(n-2);
}
#include<iostream.h>
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);
}
}
#include<iostream.h>
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);
}
#include<iostream.h>
void main()
{
float a[]={1,5,9,10};
int n=4;
___________________________________________________________________________
Docente: Ing. Marcelino Torres Villanueva 3
TEMA: RECURSIVIDAD
________________________________________________________________________________
Ejercicios propuestos
Usando funciones recursivas resolver:
___________________________________________________________________________
Docente: Ing. Marcelino Torres Villanueva 4