Hola MrClassic
Tu código en efecto es funcional y realiza su trabajo perfectamente.
Pero abría que añadir el método para calcular la raiz cuadrada a nuestra calculadora.
En fin talvez me enrede en trabajos innecesarios, pero pude notar que una vez se retorna un valor desde una variable, ese valor desaparese y no se puede imprimir usando la misma variable que lo contenia (por favor corrigeme si estoy equivocado en esta afirmación).
Cuando un método devuelve un valor, ese valor lo recibe alguien (otro método), entonces no se pierde.
Al devolver ese valor, implica que el método termina su ejecución (return valor;) y todas las variables internas ciertamente desaparecen. Hasta que volvemos a llamar a ese método y esas variables se crean de nuevo y adoptan nuevos valores.
como haria para imprimir en una linea dentro de la clase el valor ingresado y el resultado en metodos de este tipo,
En Java ya sabes que hay métodos de tipo procedimiento (void -no devuelven nada) y tipo función que devuelven algún valor.
Nosotros en nuestros programas usaremos unos y otros para obtener un resultado final.
Generalmente, solo cuando llegamos a ese resultado final, imprimiremos por decirlo así el resultado por consola o en impresora o en otro sitio como un archivo.
Cuando llega ese momento de imprimir el resultado tal vez usaremos el System.out.println para mostrar el resultado.
Pero los otros métodos (procedimientos o funciones) que han intervenido en llegar a nuestro resultado no tienen porque imprimir sus resultados internos.
No tiene sentido atiborrar al usuario del programa con datos de los cálculos internos cuando lo único necesario es el resultado final.
El 90% de los métodos realizan cálculos y devuelven, o no un valor. El resto se dedican a presentar esos valores o resultados de los cálculos.
El método:
public double getValorAbsoluto(double valorAbsoluto)
tiene una función, devolver un valor, no mostrarlo por consola. Eso ya lo hará el método que llame a getValorAbsoluto(double valorAbsoluto)
Ahora bien, si en nuestro proceso de creación del código necesitamos ver valores de los cálculos internos de un método. Si es normal presentar esos datos con una sentencia que la muestre por consola.
Para el caso que propones del método de este ejercicio, podemos hacer lo siguiente:
System.out.println("Parametro aportado: " + valorAbsoluto +
"\nResultado obtenido: " + Math.abs(valorAbsoluto));
Respecto a la recursividad, es en realidad un recurso de la programación que consiste en llamar a un método R desde dentro del propio código de dicho método R.
La recursividad no tiene más teoría (este tema no vuelve a aparecer). Lo que tiene es mucha práctica.
Ya has visto el ejemplo de la potenciaConRecursion, otro ejemplo sería tomar decisiones dentro de un directorio y también en sus subdirectorios.
Habrá problemas que se solucionan con recursión y otros que no.
Saludos