You are on page 1of 14

Programa en C++ que calcula el producto de dos números de forma recursiva.

Los
números a multiplicar se leen por teclado.

#include <iostream>
using namespace std;
int producto(int, int);
int main()
{
int n1,n2,p;

cout << "Introduzca primer numero: ";
cin >> n1;
cout << "Introduzca segundo numero: ";
cin >> n2;
p=producto(n1,n2);
cout << "producto: " << p << endl;
system("pause");

}

int producto(int a, int b)
{
if(a==0 or b==0)
return 0;
else
{
return a+producto(a,b-1);
}
}


Programa C++ que calcula el factorial de un número de forma recursiva.

#include <iostream>
using namespace std;
long double factorial(int);
int main()
{ int n;
cout << "Introduzca numero: ";
cin >> n;
cout << "factorial: " << factorial(n) << endl;
system("pause");
}
long double factorial(int n)
{
long double fact;
if (n==0)
return 1;
else
return n*factorial(n-1);
}

Programa en C++ que calcula la suma de dos números de forma recursiva.
Los números a sumar se leen por teclado.

#include <iostream>
using namespace std;
int suma(int, int);
int main()
{
int n1,n2;
cout << "Introduzca primer numero: ";
cin >> n1;
cout << "Introduzca segundo numero: ";
cin >> n2;
cout << "suma: " << suma(n1,n2) << endl;
system("pause");

}
int suma(int a, int b)
{
int resul;

if(b==0)
return a;
else if(a==0)
return b;
else
{
return 1+suma(a,b-1);
}
}

Programa en C++ que calcula el producto de dos números de forma recursiva. Los
números a multiplicar se leen por teclado.

#include <iostream>
using namespace std;
int producto(int, int);
int main()
{
int n1,n2,p;

cout << "Introduzca primer numero: ";
cin >> n1;
cout << "Introduzca segundo numero: ";
cin >> n2;
p=producto(n1,n2);
cout << "producto: " << p << endl;
system("pause");

}

int producto(int a, int b)
{
if(a==0 or b==0)
return 0;
else
{
return a+producto(a,b-1);
}
}

Ooootro post sobre recursividad, pero no se preocupen ya solo queda este y otro.
Esta vez vamos a calcular el máximo común divisor de dos números de forma
recursiva en c++.
#include
int MCD(int x, int y)
{
if(y==0)
return x;
else
return MCD(y, x%y);
}
int main()
{
int num1=0,num2=0;
printf("::MAXIMO COMUN DIVISOR::n");
printf("Introduce el primer numero: ");scanf("%i",&num1);
printf("Introduce el segundo numero: ");scanf("%i",&num2);
printf("tEl resultado es: %in", MCD(num1, num2));
return 0;
}

1. un programa para calcular el factorial de un número
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;

class Ejercicio{

public static int factorial(int n)
{
if(n==0) return 1;
else return n*factorial(n-1);
}

public static void main(String args[])
{
Scanner in =new Scanner(System.in);
int num;
do{
System.out.print("Ingrese numero :");
num=in.nextInt();
}while(num<=0);
System.out.println("El factorial es : "+factorial(num));
}
}
2. Calcular la potencia de x elevado a la n en forma recursiva. x real y n entero positivo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;

class Ejercicio{

public static double potencia(double x, double n)
{
if(n==0) return 1;
else return x*potencia(x,n-1);
}

public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int n;
double x;
System.out.print("Valor de x :");
x= in.nextDouble();
do{
System.out.print("valor de n : ");
n=in.nextInt();
}while(n<=0);
System.out.println(x+" elevado a la "+n+
" es igual a "+potencia(x,n));
}
}
24
25
3. Hacer un programa para que reporte los n términos de la serie de Fibonacci
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.Scanner;

class Ejercicio{

public static int fibonacci(int n)
{
if(n==1) return 1;
else
if(n==2)
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);
}

public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int n,i ;
do{
System.out.print("Número de terminos de la serie : ");
n=in.nextInt();
}while(n<=0);
for(i=1;i<=n;i++)
System.out.print(fibonacci(i) + " ");
System.out.println();
}
}
4. Programa para calcular el máximo común divisor de dos números.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;

class Ejercicio{

public static int mcd(int a,int b)
{
if(a%b==0) return b;
else return mcd(b,a%b);
}

public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int x,y;
do{
System.out.print("Ingrese primer numero :");
x=in.nextInt();
}while(x<=0);
16
17
18
19
20
21
22
23
24
25
do{
System.out.print("Ingrese segundo numero :");
y=in.nextInt();
}while(y<=0);
System.out.println("El mcd de "+x+" y "+y+" es : "+mcd(x,y));
}
}
5. Programa para reportar un numero al revés
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;

class Ejercicio{

public static void reves(int n)
{
System.out.print(n % 10);
if( n/10!=0 )
reves(n/10);
}

public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int num;
do{
System.out.print("Ingrese numero :");
num=sc.nextInt();
}while(num<=0);
System.out.print("Numero al reves :");
reves(num);
System.out.println();
}
}
6. Programa para convertir un numero de base 10 a base b (entre 2 y 9)
1
2
3
4
5
6
7
8
9
10
import java.util.*;

class Ejercicio{

public static void conversionBase(int n, int b)
{
if(n<b)
System.out.print(n);
else
{
conversionBase(n/b,b);
System.out.print(n%b);
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
}
}

public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int num,b;
do{
System.out.print("Ingrese numero :");
num=sc.nextInt();
}while(num<=0);
do{
System.out.print("Base a la que quiere convertir : ");
b=sc.nextInt();
}while(b<2 || b>9);
System.out.print("El numero "+num+" en base "+b+" es : ");
conversionBase(num,b);
System.out.println();
}
}


1. un programa para calcular el factorial de un número
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;

class Ejercicio{

public static int factorial(int n)
{
if(n==0) return 1;
else return n*factorial(n-1);
}

public static void main(String args[])
{
Scanner in =new Scanner(System.in);
int num;
do{
System.out.print("Ingrese numero :");
num=in.nextInt();
}while(num<=0);
System.out.println("El factorial es : "+factorial(num));
}
}
2. Calcular la potencia de x elevado a la n en forma recursiva. x real y n entero positivo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;

class Ejercicio{

public static double potencia(double x, double n)
{
if(n==0) return 1;
else return x*potencia(x,n-1);
}

public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int n;
double x;
System.out.print("Valor de x :");
x= in.nextDouble();
do{
System.out.print("valor de n : ");
n=in.nextInt();
}while(n<=0);
System.out.println(x+" elevado a la "+n+
" es igual a "+potencia(x,n));
}
}
24
25
3. Hacer un programa para que reporte los n términos de la serie de Fibonacci
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.Scanner;

class Ejercicio{

public static int fibonacci(int n)
{
if(n==1) return 1;
else
if(n==2)
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);
}

public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int n,i ;
do{
System.out.print("Número de terminos de la serie : ");
n=in.nextInt();
}while(n<=0);
for(i=1;i<=n;i++)
System.out.print(fibonacci(i) + " ");
System.out.println();
}
}
4. Programa para calcular el máximo común divisor de dos números.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;

class Ejercicio{

public static int mcd(int a,int b)
{
if(a%b==0) return b;
else return mcd(b,a%b);
}

public static void main(String args[])
{
Scanner in = new Scanner(System.in);
int x,y;
do{
System.out.print("Ingrese primer numero :");
x=in.nextInt();
}while(x<=0);
16
17
18
19
20
21
22
23
24
25
do{
System.out.print("Ingrese segundo numero :");
y=in.nextInt();
}while(y<=0);
System.out.println("El mcd de "+x+" y "+y+" es : "+mcd(x,y));
}
}
5. Programa para reportar un numero al revés
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;

class Ejercicio{

public static void reves(int n)
{
System.out.print(n % 10);
if( n/10!=0 )
reves(n/10);
}

public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
int num;
do{
System.out.print("Ingrese numero :");
num=sc.nextInt();
}while(num<=0);
System.out.print("Numero al reves :");
reves(num);
System.out.println();
}
}
6. Programa para convertir un numero de base 10 a base b (entre 2 y 9)

Ejemplos de funciones recursivas en C++:

1. // Sumar los dígitos de un número
#include <iostream>
using namespace std;
int SumaDigitos(int);
int main() {
cout << 32890123 << ": " << SumaDigitos(32890123) << endl;
return 0;
}
int SumaDigitos(int n) {
if(n < 10) return n;
return n%10+SumaDigitos(n/10);
}

2. // El producto de forma recursiva
#include <iostream>
using namespace std;
int producto(int a, int b){
if (b==0)
return 0;
else
return a+producto(a,b-1);
}

3. // Suma recursiva de los elementos de un vector
#include <iostream>
using namespace std;
int SumaV (int *V, int n){
if (n==0)
return V[0];
else
return V[n]+sumaV(V,n-1);
}

4. // Buscar el máximo de un vector (I)
#include <iostream>
using namespace std;
int Mayor1 (int *V, int n){
int aux;
if (n==0)
return V[0];
else {
aux = Mayor1 (V, n-1);
if (V[n]> aux)
return V[n];
else
return aux;
}