Java: uso de un bucle while para resolver un cálculo

Estoy atrapado en esta pregunta de un examen simulado. Necesito multiplicar un número 'de' a un número 'n'. En otras palabras: desde * (desde + 1) (desde + 2) ... * n.

Necesito resolver este problema usando un ciclo while. Lo he hecho hasta ahora y no estoy seguro de qué hacer.

class Fact {

    private int factPartND(final int from, final int n) {

        int c = 1;
        int z = from;
        int y = n;
        int num = 0;

        while (y >= z) {

            num += from * (from + c);// need to stop multiplying from for each
                                     // iteration?
            c++;
            y--;
        }

        return num;
    }

    public static void main(String[] args) {
        Fact f = new Fact();
        int test = f.factPartND(5, 11);
        System.out.println(test);
    }

}
Respuesta 1

Tu cálculo es:

from * (from + 1) * (from + 2) * ... * (from + n)

Piense en cada factor como una iteración de su ciclo.

Por lo tanto, su segunda iteración debe multiplicar su valor acumulado por (from + 1), luego otra iteración por (from + i), dónde from < i < n, y así sucesivamente hasta que multiplique por su valor acumulado (from + n).

Su código está muy cerca: tiene (from + c)en cada iteración, pero su aritmética está mal.

Y como se ha mencionado, es un poco confuso usarlo c y y hacer un seguimiento de su ciclo, cuando es suficiente para probarlo c.

Respuesta: 2

Hay un problema con su condición dewhile bucle .

while(y>=z)
{
    ....
}

ejecutará su código por n + 1 veces. es decir, si desea ejecutar de 5 a 11, esta condición permitirá ejecutar hasta 12.

Mejor uso while(y>z) condición de en el ciclo while.

Respuesta: 3
public class Fact {

    private int factPartND(final int from, final int n) {
        int m = 1;
        int result = from;

        while (m <= n) {
            result *= (from + m++);
        }

        return result;
    }

    public static void main(String[] args) {
        Fact f = new Fact();
        int test = f.factPartND(5, 8);
        System.out.println(test);
    }
}

Si lo haces con 5, 11 tienes un desbordamiento. entonces deberías usar BigInteger en lugar de int.

Respuesta: 4

Estoy en la etapa de aprendizaje del selenio e intento obtener valores del siguiente código html. Hay varias etiquetas y quiero valores de texto de todas las etiquetas, por ejemplo: driver.findElement (By ...

Tengo un código telnet en Java usando org.apache.commons.net.telnet.TelnetClient Y estoy proporcionando información de inicio de sesión al leer "login:" del servidor telnet a través del siguiente código, en = telnet ....

Implemento un paquete 'apollo-android' y genero el archivo java 'FeedQuery' desde 'schema.json'. Pero no puedo importar ese archivo Java 'FeedQuery' a mi proyecto.

Hola, estoy tratando de obtener la clave extranjera para una tabla determinada, estoy usando este código: ResultSet rs = meta.getImportedKeys (_con.getCatalog (), null, _tableName); while (rs.next ()) {/ ...