| 
	
		|  Autor | Tema: invertir un número con recursividad en java  (Leído 21,685 veces) |  
	| 
			| 
					
						| PleySu 
								
								 Desconectado 
								Mensajes: 4
								
								
								
								
								
								   | 
 
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? 	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 
								Mensajes: 14
								
								
								
								
								
								   | 
 
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 
								Mensajes: 8
								
								
								
								
								
								   | 
								|  | Re: « Respuesta #2 en: 12 Marzo 2017, 01:51 am » |  | 
 
 
¿No sería mejor convertir en String el numero y hacerle el inverso?
 Enviado desde mi MotoG3 mediante Tapatalk
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| r00t31 
								
								 Desconectado 
								Mensajes: 14
								
								
								
								
								
								   | 
 
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: public static String invertir(int  num){   if (num < 10){   } else{      return String.valueOf( num% 10) +  invertir( num/10);   }}
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| PleySu 
								
								 Desconectado 
								Mensajes: 4
								
								
								
								
								
								   | 
								|  | Re: « Respuesta #4 en: 12 Marzo 2017, 10:53 am » |  | 
 
 
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 
								       
								
								 Desconectado 
								Mensajes: 3.412
								
								 
								ASMático
								
								
								
								
								
								     | 
 
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 
								Mensajes: 4
								
								
								
								
								
								   | 
 
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 
								       
								
								 Desconectado 
								Mensajes: 3.412
								
								 
								ASMático
								
								
								
								
								
								     | 
 
(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 
								Mensajes: 4
								
								
								
								
								
								   | 
 
(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: 	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 
								       
								
								 Desconectado 
								Mensajes: 3.412
								
								 
								ASMático
								
								
								
								
								
								     | 
 
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 | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Recursividad en Java Java
 | shigure-dark | 6 | 9,523 |  1 Septiembre 2010, 03:22 am por Leyer
 |  
						|   |   | Invertir numero de coma flotante Programación C/C++
 | jaguirred | 5 | 4,156 |  26 Febrero 2017, 22:01 pm por engel lex
 |  
						|   |   | Ejercicio de invertir un numero en vb.net (algo incomprendido) .NET (C#, VB.NET, ASP)
 | DSREY | 8 | 11,643 |  25 Junio 2017, 20:34 pm por okik
 |  
						|   |   | Invertir un número dado Programación C/C++
 | BortizF | 3 | 3,427 |  18 Octubre 2017, 16:20 pm por BortizF
 |  
						|   |   | invertir el número entero
							« 1 2 » Programación C/C++
 | lohayne | 10 | 13,608 |  22 Abril 2018, 16:48 pm por lohayne
 |    |