Documentos de Académico
Documentos de Profesional
Documentos de Cultura
________________________________________________________________________________
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>
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