problema de parámetro de recursividad [cerrado]

public void mystery1(int n) {
if (n <= 1) {
    System.out.print(n);
} else {
    mystery1(n / 2);
    System.out.print(", " + n);
}
}

Lo que da este código para números impares. Porque cuando lo dividimos no será un número entero.

preguntado el 31 de julio de 12 a las 11:07

¿Por qué no lo intentas y ves? -

4 Respuestas

No hay misterio, porque el resultado de la división de enteros en Java es entero.

Respondido 31 Jul 12, 11:07

En Java o en la mayoría de los demás lenguajes de programación, cuando divide un número entero por otro número entero, el resultado será un número entero. Si aparece un número decimal, digamos por ejemplo:

5/2=2.5

luego, el número antes del punto decimal se tratará como un número entero y se elegirá 2.

En caso de que desee convertir explícitamente el número entero en flotante o doble, puede usar cualquiera de las siguientes conversiones:

(float) 3/2;

(double) n/2;

Lo anterior lo convierte explícitamente a un decimal.

Respondido 01 ago 12, 05:08

@LouisWasserman: He mencionado que toma la función de piso del número. Entonces el piso de (-1/2) sería 0. - Ingeniero de al lado

Tradicionalmente, no, eso no es lo que significa "piso", incluso como se usa en Java mismo. - Luis Wassermann

n / 2, esta es una división entera, donde la parte fraccionaria será ignorada.

System.out.println(3/2); // prints 1
System.out.println(3.0/2); // prints 1.5
System.out.println(3/2.0); // prints 1.5
System.out.println(3.0/2.0); // prints 1.5

Respondido 31 Jul 12, 11:07

El parámetro se redondeará a int, por ejemplo, si el parámetro será 5, la próxima llamada a la función será con el parámetro 2

Respondido 31 Jul 12, 11:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.