Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 18 de Marzo 2015, 21:10

Título: CU00644B Objetos del mundo real y abstractos Java iteración y recursión
Publicado por: Lorenzo31 en 18 de Marzo 2015, 21:10
Aquí entrego el ejercicio con dos métodos de calculo, iterativo y recursión, este segundo da bien el resultado pero no sé si es lo que se considraria recursión pues modifico el parametro boolean pasado en un momento dado.

Clase MultiplicadorDieces
Código: [Seleccionar]
public class MultiplicadorDieces{
   
    public MultiplicadorDieces(){
        //Nada que inicializar
    }
   
    //Metodo 1 iterativo multiplicar dieces
    public double multiplicarPorDiez(double valorNumero, int numeroCeros){
        int dieces=1;
        double resultado=1;
       
        for (int i=1;i<=numeroCeros;i++){
           dieces=dieces*10;}
       
        resultado=valorNumero * dieces;
        return resultado;
    }
   
    // Método recursión
    public double recursionMultiplicar(double valorNumero, int numeroCeros){
        if (numeroCeros==0){return valorNumero;
        } else if (numeroCeros==1){ return valorNumero *10;
        } else { return valorNumero * recursionMultiplicar(10, numeroCeros-1);}
        }
 
}
Título: Re: Entrega del ejercicio No. 44 CU00644B Objetos del mundo real y abstractos Java
Publicado por: Lorenzo31 en 19 de Marzo 2015, 14:21
Sugerencias? comentarios ? :) quizá usé variables de más y se podia simplificar más? o no afecta.
Título: Re: Entrega del ejercicio No. 44 CU00644B Objetos del mundo real y abstractos Java
Publicado por: toni_apr en 19 de Marzo 2015, 23:17
Hola Lorenzo

Ejercicio correcto.

No es malo usar muchas variables si para tí clarifica el código. Aún así, te comprimo el método multiplicarPorDiez

Código: [Seleccionar]
    public double multiplicarPorDiez(double valorNumero, int numeroCeros){
        int dieces=1;
       
        for (int i=1;i<=numeroCeros;i++){
           dieces=dieces*10;}
       
        return valorNumero * dieces;
    }

Y en el método recursionMultiplicar le quito la condición else if y funciona igual.

Código: [Seleccionar]
    public double recursionMultiplicar(double valorNumero, int numeroCeros){

        if (numeroCeros==0){return valorNumero;
        } else { return valorNumero * recursionMultiplicar(10, numeroCeros-1);}
    }

Saludos
Título: Re: Entrega del ejercicio No. 44 CU00644B Objetos del mundo real y abstractos Java
Publicado por: Lorenzo31 en 19 de Marzo 2015, 23:24
Vale genial, resultado no hace falta pq solo lo retornamos no hacemos nada con esa variable.

Y lo otro era una linea redundante, genial, gracias Toni lo tendré presente en el futuro ;)