Está en la página 1de 3

FACULTAD NACIONAL DE INGENIERIA

INGENIERIA DE SISTEMAS E INGENIERIA INFORMATICA

METODOLOGIA DE LA PROGRAMACION II
LABORATORIO DE PROGRAMACION – SIS 2210
LABORATORIO NRO 3.

Tema: Funciones. Recursividad


Objetivos:
 Comprender el concepto de recursividad
 Aplicar la recursividad a problemas iterativos
 Ejecutar ejemplos de funciones recursivas

Fundamento Teórico:
Función Recursiva./ Una función es recursiva si puede llamarse a sí misma
Ejemplo: factorial de un numero
/* Función recursiva para cálculo de factoriales */
int factorial(int n)
{
if(n < 0) return 0;
else
if(n > 1) return n*factorial(n-1); /* Recursividad */
return 1; /* Condición de terminación, n == 1 */
}

Actividad de Clase:
Ejemplo1.- Convertir un número decimal a binario

#include<iostream>
using namespace std;

int binario(int n)
{
if(n>1) binario(n/2);
cout<<n%2;
}

int main( void ){


int nro;
cout<<" Convertir a binario un numero decimal "<<endl<<endl;
do
{
cout<<" INGRESE NUMERO DECIMAL: ";
cin>>nro;
if(nro<0) cout<<"\nINGRESE UN NUMERO ENTERO Y POSITIVO... \n";
}while(nro<0);
cout<<endl;
cout<<"\n Numero:"<<nro<<endl;
cout<<"\n Binario:";

binario(nro);

return 0;
}

Ejemplo 2.- Invertir un número entero positivo

#include<iostream>

using namespace std;

void invertir(int nro)


{
cout<<nro%10;
if (nro>=10) invertir(nro/10);

}
int main( void )
{
int nro;
cout<< "Invertir un numero "<<endl<<endl;
do{
cout<<" INGRESE NUMERO: ";
cin>>nro;
if(nro<0) cout<<"\nINGRESE UN NUMERO ENTERO Y POSITIVO... \n";
}while(nro<0);
cout<<"\n NUMERO:"<<nro;
cout<<"\nINVERTIDO:";
invertir(nro);
cout<<endl<<endl;
return 0;

Ejemplo 3.- Encontrar el MCD de 2 números enteros

#include<iostream>
using namespace std;

int mcd(int a, int b)


{
if(b==0) return a;
else mcd(b,a%b);
}
int main( void )
{
int a,b;
cout<<"Calcula el MCD de dos numeros "<<endl<<endl;
/*Validamos que "a" sea positivo y entero*/
do{
cout<<" INGRESE PRIMER NUMERO: ";
cin>>a;
if(a<0) cout<<"\nINGRESE UN NUMERO ENTERO Y POSITIVO... \n";
}while(a<0);
/*Validamos que "b" sea positivo y entero*/
do{
cout<<" INGRESE SEGUNDO NUMERO: ";
cin>>b;
if(b<0) cout<<"\nINGRESE UN NUMERO ENTERO Y POSITIVO... \n";
}while(b<0);
/*si a>b llama a mcd(a,b)*/
if(a>b)
cout<<"\n MDC( "<<a<<" , "<<b<<" ) = "<<mcd(a,b)<<endl<<endl;
else
if(a<b) /*si b>a llama a mcd(b,a)*/
cout<<"\n MDC( "<<b<<" , "<<a<<" ) = "<<mcd(b,a)<<endl<<endl;

return 0;
}

También podría gustarte