Ejercicios resueltos

Ejercicios resueltos utilizando recursividad

(Ver Recursividad)

1) Hacer un programa para ingresar un número entero y reportar su factorial.

         import java.util.Scanner;

         public class FactorialRecursivo {
                  public static int Factorial(int n){
                              if(n<=1)
                                         return 1;
                              else
                                         return n*Factorial(n-1);
                  }
                  public static void main(String[] args){
                              Scanner entrada = new Scanner(System.in);
                              int numero;
                              do{
                                        System.out.print(«Ingresar numero: «);
                                        numero = entrada.nextInt();
                              }while(numero<0);
                              System.out.println(«\t» +numero+ «!: » + Factorial(numero));
                  }
         }

2) Hacer un programa para reportar la suma de N primeros números naturales.

         import java.util.Scanner;

         public class SumaRecursiva {
                  public static int calcularSuma(int n){
                              if(n==1)
                                        return 1;
                              else
                                        return n+calcularSuma(n-1);
                  }
                  public static void main(String[] args) {
                             Scanner entrada = new Scanner(System.in);
                             int n;
                             do{
                                       System.out.print(«Ingresar N: «);
                                       n = entrada.nextInt();
                             }while(n<0);
                             System.out.println(«La suma de n es: » + calcularSuma(n));
                  }
         }

3) Hacer un programa para reportar la suma de N primeros números pares.

         import java.util.Scanner;

         public class SumaParRecursiva {
                  public static int calcularSumaPar(int n){
                              if(n==0)
                                         return 0;
                              else
                                         return 2*n+calcularSumaPar(n-1);
                  }
                  public static void main(String[] args) {
                              Scanner entrada = new Scanner(System.in);
                              int n;
                              do{
                                       System.out.print(«Ingresar N: «);
                                       n = entrada.nextInt();
                              }while(n<0);
                              System.out.println(«La suma de N pares es: » + calcularSumaPar(n));
                  }
         }

4) Hacer un programa para reportar la suma de N primeros números impares.

         import java.util.Scanner;

         public class SumaImparRecursiva {
                  public static int calcularSumaImPar(int n){
                              if(n==0)
                                         return 0;
                              else
                                         return 2*n-1+calcularSumaImPar(n-1);
                  }
                  public static void main(String[] args) {
                              Scanner entrada = new Scanner(System.in);
                              int n;
                              do{
                                       System.out.print(«Ingresar N: «);
                                       n = entrada.nextInt();
                              }while(n<0);
                              System.out.println(«La suma de N impares es: » + calcularSumaImPar(n));
                  }
         }

5) Hacer un programa para calcular la potencia de x elevado a la N, donde x es número real y N es un número entero positivo.

         import java.util.Scanner;

         public class PotenciaRecursiva {
                  public static double calcularPotencia(double x, int n){
                              if(n==0)
                                         return 1;
                              else
                                         return x*calcularPotencia(x,n-1);
                  }
                  public static void main(String[] args) {
                              Scanner entrada = new Scanner(System.in);
                              int n;
                              double x;
                              System.out.print(«Ingresar x: «);
                              x = entrada.nextDouble();
                              do{
                                        System.out.print(«Ingresar N: «);
                                        n = entrada.nextInt();
                              }while(n<=0);
                              System.out.println(x +» «+ «elevado a la» +» «+ +n+ » » +»es igual a: » + calcularPotencia(x,n));
                  }
         }

6) Hacer un programa para reportar los N números de la serie Fibonnaci.

         import java.util.Scanner;

         public class FibonnaciRecursivo {
                  public static int calcularFibonnaci(int n){
                              if(n==1 || n==2)
                                         return 1;
                              else
                                         return calcularFibonnaci(n-1)+calcularFibonnaci(n-2);
                  }
                  public static void main(String[] args) {
                              Scanner entrada = new Scanner(System.in);
                              int n;
                              do{
                                       System.out.print(«Ingresar N: «);
                                       n = entrada.nextInt();
                              }while(n<0);
                              for(int i=1;i<=n;i++)
                                     System.out.print(calcularFibonnaci(i)+ «»);
                                     System.out.println();
                  }
         }

7) Hacer un programa para calcular el máximo común divisor de dos números enteros utilizando el algoritmo de euclides.

         import java.util.Scanner;

         public class EuclidesRecursivo {
                  public static int calcularMCD(int x, int y){
                              if(x%y==0)
                                          return y;
                              else
                                          return calcularMCD(y,x%y);
                  }
                  public static void main(String[] args) {
                              Scanner entrada = new Scanner(System.in);
                              int x,y;
                              do{
                                        System.out.print(«Ingresar primer numero: «);
                                        x = entrada.nextInt();
                                        System.out.print(«Ingresar segundo numero: «);
                                        y = entrada.nextInt();
                              }while(x<=0 && y<=0);
                              System.out.println(«El MCD de «+x+» y «+y+» es: » + calcularMCD(x,y));
                  }
         }

8) Hacer un programa para invertir un número entero positivo.

         import java.util.Scanner;

         public class InvertirRecursivo {
                  public static void invertirNumero(int n){
                              System.out.print(n%10);
                              if(n/10!=0)
                                        invertirNumero(n/10);
                  }
                  public static void main(String[] args) {
                              Scanner entrada = new Scanner(System.in);
                              int numero;
                              do{
                                        System.out.print(«Ingresar numero: «);
                                        numero = entrada.nextInt();
                              }while(numero<=0);
                              System.out.println(«El numero invertido es: «);
                              invertirNumero(numero);
                              System.out.println();
                  }
         }

9) Hacer un programa para ingresar un número y reportar la suma y multiplicación de sus dígitos.

         import java.util.Scanner;

         public class NumeroRecursivo {
                  public static int calcularSuma(int n){
                              if(n<10)
                                         return n;
                              else
                                         return (n%10)+calcularSuma(n/10);
                  }
                  public static int calcularMultiplicacion(int n){
                              if(n==0)
                                         return 1;
                              else
                                         return (n%10)*calcularMultiplicacion(n/10);
                  }
                  public static void main(String[] args) {
                              Scanner entrada = new Scanner(System.in);
                              int numero;
                              do{
                                        System.out.print(«Ingresar numero: «);
                                        numero = entrada.nextInt();
                              }while(numero<0);
                              System.out.println(«La suma de sus digitos de «+numero+» es: »
                                                                                              + calcularSuma(numero));
                              System.out.println(«La multiplicación de sus digitos de «+numero+» es: «
                                                                                              + calcularMultiplicacion(numero));
                  }
         }

10) Hacer un programa para ingresar un arreglo de números enteros y reportar el menor y mayor elemento.

         import java.util.Scanner;

         public class ArregloRecursivo {
                     static Scanner entrada = new Scanner(System.in);

                     public static void ingresarArreglo(double A[], int n){
                                 for(int i=0;i<n;i++){
                                        System.out.print(«A[«+i+»]: «);
                                        A[i] = entrada.nextDouble();
                                 }
                     }
                     public static void reportarArreglo(double A[], int n){
                                 for(int i=0;i<n;i++){
                                        System.out.println(«A[«+i+»]: » + A[i]);
                                 }
                     }
                     public static double calcularMenor(double x[], int n){
                                 double auxiliar;
                                 if(n==1)
                                              return x[0];
                                 else{
                                             auxiliar = calcularMenor(x,n-1);
                                             if(x[n-1]<auxiliar)
                                                         return x[n-1];
                                             else
                                                         return auxiliar;
                                 }
                     }
                     public static double calcularMayor(double x[], int n){
                                 double auxiliar;
                                 if(n==1)
                                             return x[0];
                                 else{
                                             auxiliar = calcularMayor(x,n-1);
                                             if(x[n-1]>auxiliar)
                                                         return x[n-1];
                                             else
                                                         return auxiliar;
                                 }
                     }
                     public static void main(String[] args) {
                                 double x[];
                                 int n;
                                 System.out.print(«Ingresar número de elementos: «);
                                 n = entrada.nextInt();
                                 x = new double[n];
                                 ingresarArreglo(x,n);
                                 System.out.println(«Elementos del arreglo: «);
                                 reportarArreglo(x,n);
                                 System.out.println(«El menor elemento es: » + calcularMenor(x,n));
                                 System.out.println(«El mayor elemento es: » + calcularMayor(x,n));
                     }
         }