Programa Java que imprima os fatoriais de 1 até 10

Olá. Estou tentando resolver um exercício java mas não consigo de forma alguma. Já procurei pela internet mas tudo fica ainda mais confuso. A questão pede para criar um programa em java que imprima as fatoriais de 1 até 10. A questão é a seguinte:

Imprima os fatoriais de 1 a 10. O fatorial de um número n é n * (n-1) * (n-2) * … * 1. Lembre-se de utilizar os parênteses.

O fatorial de 0 é 1
O fatorial de 1 é (0!) * 1 = 1
O fatorial de 2 é (1!) * 2 = 2
O fatorial de 3 é (2!) * 3 = 6
O fatorial de 4 é (3!) * 4 = 24

Faça um for que inicie uma variável n (número) como 1 e fatorial (resultado) como 1 e varia n de 1 até 10:

int fatorial = 1;
for (int n = 1; n <= 10; n++){

}

OBS: Não cosigo fazer este código de forma alguma, consigo no máximo calcular os fatoriais de 1 até 3, desta forma:

int fatorial = 1;
for (int n = 1; n <= 10; n++){
fatorial = n * (n - 1);
}

Veja que quando n passa a ser 4, o cálculo do fatorial não funciona (pois o fatorial de 4 seria: 432*1= 24) e assim sucessivamente com os outros números(5,6,7,8,9,10). Alguém saberia em ajudar de uma forma simples ? Sou novo em java e ainda não aprendi nada sobre métodos, objetos ou funções porisso busco uma solução simples.

1 curtida

Você que calcular o fatorial de 1 a 10, logo vai precisar de um loop para gerar os dados, note que isso só gerar os valores, mas não resolve o fatorial:

for(int i = 1; i<=10; i++){
     int num = i; // vamos calcular o fatorial de i;
     •••
}

Como você colocou, fatorial de 4 = 4•3•2•1, logo vamos precisar de um loop decrescente que começa no número num -1 e vai até 1, multiplicando nosso valor:

for(int i = 1; i <=10; i++){
    int num = i;

    for(int j = (num-1); j>=1; j--){
        num *= j;
    }
    //mostra o resultado
    System.out.println("Fatorial de "+ i+" = "+num)
}
1 curtida

É uma questão de entendimento ( e sem precisar de dois for)

Em vez disto

for (int n = 1; n <= 10; n++){
    fatorial = n * (n - 1);
}

deves querer isto

for (int n = 1; n <= 10; n++){
    fatorial = n * fatorial;
}
3 curtidas

Era exatamente o que eu precisava, algo simples e fácil de compreender ! Realmente é apenas questão de entendimento, mas estava bem confuso pra mim resolver essa questão. Ajudou muito ! Obrigado :+1:

Valeu pela ajuda ! Funcionou perfeitamente, apesar que ainda assim o código pareceu um pouco confuso para mim que sou iniciante em Java. De qualquer forma, Obrigado !!!

1 curtida

Eu não tinha percebido/conhecia essa solução, realmente é muito mais simples!

Simples e objetivo, parabéns!