Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: umadara en 29 de Junio 2016, 20:38

Título: aprender java diferencia entre método recursivo e iterativo ejemplo CU00644B
Publicado por: umadara en 29 de Junio 2016, 20:38
Hola aquí mi resultado para el ejercicio CU00644B del tutorial de programación java para principiantes:

Código: [Seleccionar]
public class MultiplicadorDieces {
   
    //constructor

    public void multiplicadorDieces () {
   
    }
   
    //metodo iteración
    public double multiplicadorDieces (double n, int base10) {
        for(int i = 0; i < base10; i++) {
            System.out.println("valir de n = " + i);
            n = n * 10;
        }
        return n;
    }
   
    //metodo recursión
    public int potenciaConRecursion (int m, int n) {
        System.out.println("valir de n = " + n);
        if (n==0) { return m;
        } else  {
             return 10 * potenciaConRecursion (m, --n);
            }    //Cierre del método
        }
}
un saludo
Título: Re:(CU00644B) aprender java desde cero recursos
Publicado por: DRANXZ88 en 29 de Junio 2016, 21:26
No es necesario crear dos métodos.
Citar
Define una clase denominada multiplicadorDieces con un constructor vacío y que contenga un método denominado multiplicarPorDieces que reciba dos parámetros: el primero un número de tipo double y el segundo un número de tipo entero. El método debe devolver el resultado de multiplicar por 10 elevado al segundo número el primer número. Ejemplo: multiplicarPorDieces (2.55, 2) devuelve 2.55*100 = 255. multiplicarPorDieces (3, 5) devuelve 3*100000 = 300000. MultiplicarPorDieces (-0.0563, 3) devuelve -0.563 * 1000 = -56.3. Crea un objeto y comprueba que el método opera correctamente. Para comprobar si es correcta tu solución puedes consultar en los foros aprenderaprogramar.com.
Definiste la clase correctamente creaste un constructor vació esta bien, el problema esta en que tenes que crear un método que se llame multiplarPorDieses.
Vos creaste un método pero le falta alguna lógica para que cumpla lo que dice el ejercicios.
Código: [Seleccionar]
//metodo iteración
    public double multiplicadorDieces (double n, int base10) {
        for(int i = 0; i < base10; i++) {
            System.out.println("valir de n = " + i);
            n = n * 10;
        }
        return n;
    }
Con alguna modificacion quedaria asi.
Código: [Seleccionar]
public double multiplicadorPorDieces(double m, int n) {
        int x = 1;
        double resultado;
        for (int i = 0; i < n; i++) {
           x = x * 10;

        }
        resultado = m * x;
      return resultado;
    } //Cierre del método
El ultimo método que creaste ya no es necesario. Espero que te ayude.
Título: Re:(CU00644B) aprender java desde cero recursos
Publicado por: umadara en 29 de Junio 2016, 21:41
Hola, gracias por tu respuesta, lo hice por los 2 métodos ya que son los 2 métodos que se mostraban en la lección. Creo que no entendiste bien lo que pretendo hacer con  el método de iteración ya que funciona perfectamente. Lo que hago es multiplicar n x 10 m veces, que es lo mismo que hacer 10 x 10 m veces y luego multiplicar por n, corrígeme si estoy equivocado. El segundo método también funciona, si pudieses probarlo y confirmarme que no estoy equivocado, estaría muy agradecido.
un saludo.
Título: Re:(CU00644B) aprender java desde cero recursos
Publicado por: DRANXZ88 en 29 de Junio 2016, 22:28
Entendiste mal parece solo pide un método que se llama multiplicarPorDieces  y tiene que recibir dos valor. Ejemplo
Código: [Seleccionar]
multiplicarPorDieces (2.55, 2).
En tuyo cuando instancia y crea el objeto y le pasa el valor no hace lo que pide porque tenes otro objeto es decir que solo tenes que crear un objeto y cargar los valores y al ejecutar te tiene que imprimir lo que pide.
Título: Re:aprender java diferencia entre método recursivo e iterativo ejemplo CU00644B
Publicado por: Alex Rodríguez en 05 de Julio 2016, 19:41
Hola umadara, tu método multiplicadorDieces cumple con lo que pedía el ejercicio. En cambio el método potenciaConRecursion no, ya que el ejercicio pedía que se recibiera un double y un int y ese método recibe dos int. El ejercicio puede resolverse con recursión si se quiere, pero es un poco más complejo.

La forma planteada por DRANXZ88 es otra forma de plantear la solución para este ejercicio.

Saludos