Autor Tema: aprender java diferencia entre método recursivo e iterativo ejemplo CU00644B  (Leído 3497 veces)

umadara

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
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
« Última modificación: 05 de Julio 2016, 19:41 por Alex Rodríguez »

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:(CU00644B) aprender java desde cero recursos
« Respuesta #1 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.

umadara

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 45
    • Ver Perfil
Re:(CU00644B) aprender java desde cero recursos
« Respuesta #2 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.

DRANXZ88

  • Avanzado
  • ****
  • Mensajes: 356
    • Ver Perfil
Re:(CU00644B) aprender java desde cero recursos
« Respuesta #3 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.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
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

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".