Sunteți pe pagina 1din 7

Ejercicios Resueltos de Recursividad

1) Crear la clase NumeroEntero que tenga como atributo un numero entero y los siguientes
métodos recursivos:

a) calcularFactorial
b) imprimirNumeroAlReves
c) conversionBase, que convierte el número de base 10 a otra base entre 2 y 9,

public class NumeroEntero {


private int numero;
public NumeroEntero(int numero) {
this.numero = numero;
}

public int getNumero() {


return numero;
}

public void setNumero(int numero) {


this.numero = numero;
}

public int calcularFactorial(){


return calcularFactorial(numero);
}

private int calcularFactorial(int n){


if(n==0)
return 1;
else
return n*calcularFactorial(n-1);
}

private void imprimirNumeroAlReves(int n){


if(n>0){
System.out.print(n % 10);
imprimirNumeroAlReves(n/10);
}
}

public void imprimirNumeroAlReves(){


imprimirNumeroAlReves(numero);
}
private void conversionBase(int n, int b)
{
if(n>0)
{
conversionBase(n/b,b);
System.out.print(n%b);
}
}

public void conversionBase(int b){


conversionBase(numero,b);
}

public class ProyectoRecursividad01 {


public static void main(String[] args) {
Scanner entrada=new Scanner(System.in);
int numero,base;
System.out.print("Ingrese numero entro :");
numero=entrada.nextInt();
NumeroEntero numeroEntero=new NumeroEntero(numero);
System.out.println("El factorial del numero es: "+numeroEntero.calcularFactorial());
System.out.println("El numero al reves es");
numeroEntero.imprimirNumeroAlReves();
System.out.println();
System.out.print("Ingrese la base a la que quiere convertir: ");
base=entrada.nextInt();
System.out.print("El numero en la nueva base es: ");
numeroEntero.conversionBase(base);
System.out.println();
}
}

2) Crear la clase Fibonacci que tenga como atributo un número entero n y tenga un método que
devuelva el enésimo término de la serie de Fibonacci.

public class Fibonacci {


private int n;

public Fibonacci(int n) {
this.n = n;
}

public int getN() {


return n;
}
public void setN(int n) {
this.n = n;
}

private int calcularTermino(int n){


if(n==1 || n==2) return 1;
else
return calcularTermino(n-1) + calcularTermino(n-2);

public int calcularTermino(){


return calcularTermino(n);
}

public class ProyectoRecursividad02 {

public static void main(String[] args) {


Scanner entrada=new Scanner(System.in);
int n;
System.out.print("Ingrese valor de n :");
n=entrada.nextInt();
Fibonacci fibo=new Fibonacci(n);
System.out.println("El termino "+n+ " es : "+fibo.calcularTermino());
}

3) Crear la clase NumerosEnteros que tenga como atributos 2 numeros enteros y calcular el
máximo común divisor de los dos números.

public class NumerosEnteros {


private int numero1;
private int numero2;

public NumerosEnteros(int numero1, int numero2) {


this.numero1 = numero1;
this.numero2 = numero2;
}

public int getNumero1() {


return numero1;
}
public void setNumero1(int numero1) {
this.numero1 = numero1;
}

public int getNumero2() {


return numero2;
}

public void setNumero2(int numero2) {


this.numero2 = numero2;
}

private int mcd(int a,int b)


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

public int mcd(){


return mcd(numero1,numero2);
}
}

public class ProyectoRecursividad03 {

public static void main(String[] args) {


Scanner entrada=new Scanner(System.in);

int num1,num2;
System.out.print("Ingrese primer numero :");
num1=entrada.nextInt();
System.out.print("Ingrese segundo numero :");
num2=entrada.nextInt();
NumerosEnteros numeros=new NumerosEnteros(num1,num2);
System.out.println("El m.c.d. es : "+numeros.mcd());
}
}
4) Crear una clase que tengas como atributos un número real y un número entero. Se debe calcular
la potencia del número.

public class Matematica {


private double numero;
private int exponente;

public Recursividad02(double numero, int exponente) {


this.numero = numero;
this.exponente = exponente;
}
public double getNumero() {
return numero;
}

public void setNumero(double numero) {


this.numero = numero;
}

public int getExponente() {


return exponente;
}

public void setExponente(int exponente) {


this.exponente = exponente;
}

public double potencia(){


return potencia(numero,exponente);
}

private double calcularPotencia(double x, int n){


if(n==0)
return 1;
else
return x * calcularPotencia(x,n-1);
}

public class ProyectoRecursividad04 {

public static void main(String[] args) {


Scanner entrada = new Scanner(System.in);
double x;
int n;
System.out.print("Valor de x :");
x=entrada.nextDouble();
System.out.print("Valor de n: ");
n=entrada.nextInt();
Matematica mate = new Matematica(x,n);
System.out.println("La potencia es :"+mate.calcularPotencia());

}
5) Crear la clase VectorReales que tenga como atributos un vector de elementos reales y el
número de Elementos que se van ingresando. Crear los métodos recursivos
a) sumarElementos: Devuelve la suma de todos los elementos del vector
b) mayorElemento: Devuelve el mayor elemento del vector

public class VectorReales {


private double vector[];
private int totalElementos;

public VectorReales(){
vector = new double[10];
totalElementos = 0;
}
public VectorReales(int limite){
vector = new double[limite];
totalElementos = 0;
}

public boolean agregar(double valor){


if(totalElementos < vector.length){
vector[totalElementos] = valor;
totalElementos++;
return true;
}
else
return false;
}

public double devolverElemento(int indice){


return vector[indice];
}

public int getTotalElementos(){


return totalElementos;
}

private double sumarElementos(double x[], int n){


if(n==0)
return 0;
else
return x[n-1]+sumarElementos(x,n-1);
}

public double sumarElementos(){


return sumarElementos(vector,totalElementos);
}

private double mayorElemento(double x[], int n){


if(n==1)
return x[0];
else
if(x[n-1]>mayorElemento(x,n-1))
return x[n-1];
else
return mayorElemento(x,n-1);
}

public double mayorElemento(){


return mayorElemento(vector,totalElementos);
}
}

public class ProyectoRecursividad05 {

public static void main(String[] args) {


Scanner entrada=new Scanner(System.in);

VectorReales vectorReales = new VectorReales();

int n,i;
double valor;
System.out.print("Numero de elementos : ");
n=entrada.nextInt();

for(i=0;i<n;i++)
{
System.out.print("Ingrese valor :");
valor=entrada.nextDouble();
vectorReales.agregar(valor);
}

System.out.println("Vector Ingresado");
for(i=0;i<vectorReales.getTotalElementos();i++)
System.out.println(vectorReales.devolverElemento(i));

System.out.println("La suma de los elementos es: "+vectorReales.sumarElementos());


System.out.println("El mayor de loes elementos es: "+vectorReales.mayorElemento());
}

S-ar putea să vă placă și