elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  invertir un número con recursividad en java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: invertir un número con recursividad en java  (Leído 405 veces)
PleySu

Desconectado Desconectado

Mensajes: 4


Ver Perfil
invertir un número con recursividad en java
« en: 11 Marzo 2017, 22:48 »

Quiero invertir un número con recursividad y no consigo hacerlo, en mi cabeza tiene sentido lo que escribo, pero después al ejecutarlo no se invierte el número, alguien puede decirme donde está el error?

Código:
public static int invertir(int num) {
if (num<10) {       
  return num;
}
else {

  return (num%10)+(invertir(num/10)*10);
}
}


public static void main(String[] args){
int num=123;
System.out.println(invertir(num));
}


En línea

r00t31

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: invertir un número con recursividad en java
« Respuesta #1 en: 12 Marzo 2017, 00:42 »

Efectivamente la lógica de lo que intentas hacer esta correcta solo que al momento de retornar el valor de la función estás considerando que se hace una concatenación de los valores más sin embargo así tal como está tu código se realiza una suma, por eso es que te regresa 6 que es 3+2+1, no estoy muy empapado de java pero puedes intentar convertir a string la operación del (num%10)


En línea

BlackBlex

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re:
« Respuesta #2 en: 12 Marzo 2017, 01:51 »

¿No sería mejor convertir en String el numero y hacerle el inverso?

Enviado desde mi MotoG3 mediante Tapatalk
En línea

r00t31

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: invertir un número con recursividad en java
« Respuesta #3 en: 12 Marzo 2017, 07:50 »

Si efectivamente sería lo más óptimo convertir a String e invertirla pero tal vez sea un ejercicio que tenga que realizar con recursividad.
El código solo necesita unos pocos ajustes:
Código
  1. public static String invertir(int num){
  2.   if (num < 10){
  3.      return String.valueOf(num);
  4.   } else{
  5.      return String.valueOf(num%10) + invertir(num/10);
  6.   }
  7. }
En línea

PleySu

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re:
« Respuesta #4 en: 12 Marzo 2017, 10:53 »

Efectivamente la lógica de lo que intentas hacer esta correcta solo que al momento de retornar el valor de la función estás considerando que se hace una concatenación de los valores más sin embargo así tal como está tu código se realiza una suma, por eso es que te regresa 6 que es 3+2+1, no estoy muy empapado de java pero puedes intentar convertir a string la operación del (num%10)


¿No sería mejor convertir en String el numero y hacerle el inverso?

Enviado desde mi MotoG3 mediante Tapatalk

Muchas gracias, pero el ejercicio no puedo pasarlo a string, tengo que operar con números enteros, al ejecutar el programa en vez de invertirme los números me los saca de la misma forma, es decir, introduzco 123 y saca 123
En línea

ivancea96


Conectado Conectado

Mensajes: 2.907


ASMático


Ver Perfil WWW
Re: invertir un número con recursividad en java
« Respuesta #5 en: 12 Marzo 2017, 16:46 »

En vez de sumar solo num%10, deberías sumarlo multiplicado por 10^N, donde N sería la cantidad de dígitos del número (para colocar la cifra al final).
En línea

PleySu

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: invertir un número con recursividad en java
« Respuesta #6 en: 12 Marzo 2017, 20:27 »

En vez de sumar solo num%10, deberías sumarlo multiplicado por 10^N, donde N sería la cantidad de dígitos del número (para colocar la cifra al final).


no entiendo muy bien que quieres decir con eso, puedes ponerme un ejemplo?
En línea

ivancea96


Conectado Conectado

Mensajes: 2.907


ASMático


Ver Perfil WWW
Re: invertir un número con recursividad en java
« Respuesta #7 en: 12 Marzo 2017, 21:04 »

(num%10)+(invertir(num/10)*10)
Suponte que num es 123.
(123%10) + invertir(123/10) * 10
Pasaría a:
3 + invertir(12) * 10

Supongamso que invertir funcionase correctamente (que lo hará cuando esté corregida):
3 + 21*10
3 + 210
213

Tú no quieres sumarle 3.
Tú buscas esto:
3*10^3 + 21 (sin el *10)
300 + 21
321

10^3. Ese 3 es el número de cifras del número inicial, 123.
En línea

PleySu

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: invertir un número con recursividad en java
« Respuesta #8 en: 12 Marzo 2017, 22:55 »

(num%10)+(invertir(num/10)*10)
Suponte que num es 123.
(123%10) + invertir(123/10) * 10
Pasaría a:
3 + invertir(12) * 10

Supongamso que invertir funcionase correctamente (que lo hará cuando esté corregida):
3 + 21*10
3 + 210
213

Tú no quieres sumarle 3.
Tú buscas esto:
3*10^3 + 21 (sin el *10)
300 + 21
321

10^3. Ese 3 es el número de cifras del número inicial, 123.

entiendo, con lo que me dices he hecho esto para sacar los dígitos de los números:

Código:
public static int contar(int num){

int p=1;
do{
num=num/10;
p=p*10;

}while (num!=0);
return p/10;
}

y así el programa funciona correctamente, muchas gracias
En línea

ivancea96


Conectado Conectado

Mensajes: 2.907


ASMático


Ver Perfil WWW
Re: invertir un número con recursividad en java
« Respuesta #9 en: 13 Marzo 2017, 00:38 »

Bien. De todosmodos, quería comentar que me equivoqué. No es 10 elevado al número de dígitos, sinó al número de dígitos menos 1 (3 * 10^3 no es 300 xD)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tutorial invertir lista simple en java a travez de nodos by.AmeRiK@nO
Java
Amerikano|Cls 6 5,786 Último mensaje 12 Diciembre 2011, 03:10
por sant0s
incremetar lista numero binario utilizando recursividad [C++] « 1 2 »
Programación C/C++
fuenteRea 11 3,758 Último mensaje 30 Julio 2009, 15:15
por Eternal Idol
Recursividad en Java
Java
shigure-dark 6 5,889 Último mensaje 1 Septiembre 2010, 03:22
por Leyer
Ayuda recursividad y árbol java.
Ejercicios
Caruko 0 597 Último mensaje 17 Noviembre 2014, 21:02
por Caruko
Invertir numero de coma flotante
Programación C/C++
jaguirred 5 182 Último mensaje 26 Febrero 2017, 22:01
por engel lex
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines