
Ejercicios resueltos utilizando 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));
}
}