Sie sind auf Seite 1von 8

Ejemplos de Recursividad

Recursividad en c++ de Función Ackerman

#include <iostream>
#include<conio.h>
using namespace std;
int AckermanR(int n,int m)
{
if (!n)
return (m+1);
else if (!m)
return (AckermanR(n-1, 1));
else
return (AckermanR(n-1, AckermanR(n,m-1)));
}
int main()
{
int m, n;
cout<<"Ingresa el valor de m: ";
cin>>m;
cout<<"Ingresa el valor de n: ";
cin>>n;
cout<<"Ackerman("<<m<<","<<n<<") = "<<AckermanR(n,m)<<endl;
cout<<"_____________________________";

getch();
return(0);
}
Recursividad en c++ de Factorial de un número

#include <iostream>
#include <conio.h>

using namespace std;

int nFibonacci(int n);

int main()
{int x;
cout<<"escribe un numero";
cin>>x;
for(int t=1;t<=x;t++)
{
cout<<nFibonacci(t)<<endl;
}
system("pause");
return 0;
getch();
}

int nFibonacci(int n)
{
if(n==0) return 0;
else
if(n==1) return 1;
else return (nFibonacci(n-2)+nFibonacci(n-1));
}
Recursividad en c++ de Inversión de un número

#include<iostream>
#include<windows.h>

#include<math.h>//cabecera para usar la funcion floor y fabs...


//floor es paar obetenr el entero de un numero decimal...

using namespace std;

void recur(double &i);

int main(){
double i;
int e;
cout<<"Ingrese un numero : ";cin>>i;
cout<<"El numero invertido es = ";
recur(i);
cout<<endl;
system("pause");
return 0;
}

void recur(double &i)


{
int e;
i=i/10;
e=floor(i);
i=fabs(e-i);

cout<<i*10;

i=e;

if(i!=0)recur(i);

}
Recursividad en c++ de Máximo Común Divisor

#include <iostream.h>
#include<conio.h>
int mcd (int m, int n)
{
if (m % n == 0) return n;
else return (mcd(n, m % n));
}
int main(){
int a,b,res;
cout<<"excriba dos numeros";
cin>>a>>b;
res=mcd(a,b);
cout<<res;
getch();
}

Recursividad en c++ de Multiplicación

#include <iostream>

using namespace std;


int mult(int a,int b);
int main()
{
int a, b, producto;
cout << "Introduce dos enteros a y b (b>=0): ";
cin >> a>> b;
producto=mult(a,b);
cout << "El producto de ambos es: " << producto << endl << endl;
system ("pause");
return 0;
}
int mult(int a,int b){
if (b==0) return 0;
else return (a+mult(a,b-1));}
Recursividad en c++ de Potencia de un número

#include <iostream.h>
#include<conio.h>
float potencia(float base, int exp);
int main()
{
float base, exp;
float res;
cout << "Introduce la base de la potencia\n";
cin >> base;
cout << "Expontente:\n";
cin >> exp;
res=potencia(base,exp);
cout << "La potencia de " << base << " ^ " << exp << " es " << res;
getch();
return 1;

}
float potencia(float base, int exp)
{
float res;
if (exp == 0)
res=1.0;
else if (exp > 0)
{

res=base * potencia(base,exp - 1);


}
else if (exp < 0)
{

res= 1.0 / base *potencia(base,exp + 1);


}
return res;
}
Recursividad en c++ de Suma de Arreglos

#include<iostream>
#include<windows.h>
using namespace std;
int max(int n,int a[0]);
int suma(int num1, int num2);

int main(){
int a[10];
int may;
float prom;
int i;
int total = 0;
int j=9;
cout<<"ingrese numeros";
for ( i = 0; i <j; i++ ) {
cin>>a[i];
total = suma(total, a[ i ]);
may=max(j,a);
}
prom=(total*1.0)/9;
cout<<"El total de los elementos del arreglo es "<< total <<endl;
cout<<"El maximo de los elementos del arreglo es "<< may <<endl;
cout<<"El promedio de los elementos del arreglo es "<<prom<<endl;
system("PAUSE");
return 0;
}

int suma(int num1, int num2){


return num1 + num2;}
int max(int n,int a[0])
{
if(n==1) return a[0];
if(a[n-1]>max(n-1,a))return a[n-1];
else return max(n-1,a);

}
Recursividad indirecta

int par(int n);

int impar(int n);

int par (int n){

if (n == 0) return 1;

return impar(n-1);

int impar(int n){

if(n == 0) return 0;

return par(n-1);

Recursión lineal

{n mayor o igual 0 y m mayor o igual 0}

funcion MCD(n, m: entero) devuelve entero

var r: entero;

opción

n=m : r := n;

n>m : r := MCD(n-m, m);

n<m : r := MCD(n, m-n);

fopción

devuelve r

ffuncion

{MCD(n, m) es el máximo entero que divide a n y a m}


Recursión lineal no final

{n myor o igual 0}

funcion FACT (n: entero) devuelve entero

var r, v :entero ;

opción

n = 0 : r := 1;

n > 0 : v := FACT (n-1);

r := v * n;

fopción

devuelve r

ffunción

{FACT(n) = n + !}

Recursión multiple

{N mayor o igual 0}

funcion Fib(n: entero) devuelve entero;

var r :entero ;

opción

n1 : r := n;

n > 1 r := Fib (n -1) + Fib (n - 2);

fopción

deculve r

ffunción

{Fib (n) = Fibonacci(n)}

Das könnte Ihnen auch gefallen