Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

413
Vistas
¿Por qué esta función devuelve 83 y no 5 cuando llamamos a la función (2)?

Cuando ejecuto esta función ingresando 2 y no entiendo por qué devuelve 83 y no 5, ya que debería llamar a la función (1) en la declaración else y luego la declaración if debería ejecutarse y la función debería devolver 5.

 public static int function(int y) { if (y == 1) return 5; function(y - 1); y = y + 1; return 83; }
over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Devuelve 83 porque no está utilizando el valor de retorno de la function(y - 1);
Para probarlo prueba:

 public static int function(int y) { if (y == 1) return 5; else { int returnedValue = function(y - 1); System.out.println("un used returned value: "+returnedValue); y = y + 1; return 83; } }

Cambiar a:

 public static int function(int y) { if (y == 1) return 5; /*else*/ return function(y - 1); }
over 4 years ago · Santiago Trujillo Denunciar

0

Con entrada: y = 2,

otra condición será manejada.

 function(y - 1);//nothing impact to y y = y + 1;// y =3 return 83; // but finally return 83

¿Entiendes el punto?

over 4 years ago · Santiago Trujillo Denunciar

0

Dado que no devuelve function(y-1) , la declaración es tan buena como anular la función (para esa llamada).

Entonces, tan pronto como el control alcanza la función (y-1) y finalmente conduce a la función de llamada (1), obtiene 5 pero no se devuelve a la función del controlador. En cambio, lo que se devuelve es el valor 83.

over 4 years ago · Santiago Trujillo Denunciar

0

Mira esto:

 public static int function(int y) { if (y == 1) return 5; function(y - 1); // you do not use return value y = y + 1; return 83; // you always get this return }

Significa que puede reemplazar su función con:

 public static int function(int y) { return 83; }

Parece que quieres hacer algo. Me gusta esto:

 public static int function(int y) { return y == 1 ? 5 : function(y - 1); }

pero tenga cuidado, porque para y < 1 tendrá una recursividad infinita ( StackOverflowError ).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda