miércoles, 18 de marzo de 2009

recursion en c++

ejemplos basicos para la recursion en c++

factorial
serie fibonacci
división por restas sucesivas
invertir un número
sumar los dígitos de un número
multiplicación rusa


OjO sumar los dígitos de un número le falta algo xDD


# include
# include

using namespace std;
int factorial(int *a);
int factorial(int *a)
{
int aux;
if (*a==1||*a==0 )
{
return 1;
}
else
{
aux= * a- 1;
return *a * factorial(&aux);
}
system("pause");
}

int fibo(int *a)
{
int aux,aux2;
if(*a==0 || *a== 1) {
return *a;
} else {
aux =*a-1;
aux2= *a-2;
return fibo(&aux) + fibo(&aux2);
}
system("pause");
}

int resta(int *a,int *b,int *aux)
{


if(*b==0)
{
cout<<"error no se puede dividir por 0";

}
if(*b>=*a)
{
cout<<"reciduo"<<*a;
cout<<"\n";
cout<<"cociente"<<*aux;
system("pause");
return 1;
}


*a= *a - *b;
*aux=*aux+1;
return resta(a,b,aux);

system("pause");
}
int invertir(int *a)
{
int modulo;
int salida=0;
if(*a==0)
{

system("pause");
return 0;
}


modulo = *a %10;

salida =salida * 10 +modulo;
cout< *a = *a /10;

return invertir (a);

}

int sumar(int *a, int *auxiliar)
{
int modulo;

int salida;
if(*a==0)
{

system("pause");
return 0;
}


modulo = *a %10;


*a = *a /10;
*auxiliar= *a+modulo+*auxiliar;
cout<<*auxiliar< return sumar (a,auxiliar);

}

int MulRusa2(int *Mul1,int *Mul2,int *suma)
{
if(*Mul1==0){
return(*suma);
}else{
if(*Mul1%2==0){

*Mul1=*Mul1/2;
*Mul2=*Mul2*2;
return(MulRusa2(Mul1,Mul2,suma));
}else{
*suma=*suma+*Mul2;
*Mul1=*Mul1/2;
*Mul2=*Mul2*2;
return(MulRusa2(Mul1,Mul2,suma));
}
}
}

main () {

int opcion;
int *n;
int *w;
int d;
int facto;
int auxiliar;
n=&facto;
w=&auxiliar;
int cociente=0;
int * coci;
coci= &cociente;
cout<<"ingrese \n 1 factorial \n 2 serie fibonacci \n 3 división por restas sucesivas \n 4 invertir un número \n 5 sumar los dígitos de un número \n 6 multiplicación rusa";
cin>>opcion;


if(opcion==1)
{
cout << "Numero entero:";
cin>> *n;
d = factorial(n);
cout<system("pause");
}
if(opcion==2)
{
cout << "Numero entero:";
cin>> *n;
d = fibo(n);
cout<system("pause");
}

if(opcion==3)
{

cout << "Numero entero:";
cin>> *n;
cout << "ingrese otro numero:";
cin>> *w;
d = resta(n,w,coci);
cout<system("pause");
}
if(opcion==4)
{

cout << "Numero entero:";
cin>> *n;

d = invertir(n);
cout<system("pause");
}

if(opcion==5)
{

cout << "Numero entero:";
cin>> *n;

d = sumar(n,coci);
cout<system("pause");
}
if(opcion==6)
{
int Mul1,Mul2,suma=0;
n=&Mul1;

w=&Mul2;
cout << "Numero entero:";
cin>> *n;
cout << "ingrese otro numero:";
cin>> *w;
d = MulRusa2(n,w,coci);
cout<system("pause");
}

}

0 comentarios:

Publicar un comentario

Tu comentario será moderado la primera vez que lo hagas al igual que si incluyes enlaces. A partir de ahi no ser necesario si usas los mismos datos y mantienes la cordura. No se publicarán insultos, difamaciones o faltas de respeto hacia los lectores y comentaristas de este blog.