Imprimir fatorial

Boa noite…

Estou tentando criar um programa para exibir o fatorial de um numero X…
Porém não obtive sucesso com o Código desenvolvido:

[code]class Fatorial{
public static void main (String args[]){

int n = 4;

while (n >=1){

n = n*(n-1);

n = n-1;

System.out.println (n);

}

}

}[/code]

Será que alguém pode me ajudar…?

Que erro acontece?

Ao executar é exibido:

É só parar para pensar…

int n = 4;

while (n >=1){

n = n*(n-1);

n = n-1;

System.out.println (n);

}

Se n = 4,então n = n*(n-1); vai por n = 12 mas n = n-1; muda o valor para 11.
Volta para o while e n = n*(n-1); dá n = 110 com n = n-1; passa a 109.
E assim sucessivamente…

Tu precisas de DUAS coisas: contar de 4 até 1 e multiplicar os números.

Então devo colocar outro for dentro deste?

e aí filipegpaulo, fazendo algumas alterações no seu código:

int n = 4, contador = n-1;
  
    while ( contador >= 1 ){  
  
         n = n * contador;  
  
         contador -- ;  
  
    }  
 System.out.println (n);  
}

[quote=filipegpaulo]Boa noite…

Estou tentando criar um programa para exibir o fatorial de um numero X…
Porém não obtive sucesso com o Código desenvolvido:

[code]class Fatorial{
public static void main (String args[]){

int n = 4;

while (n >=1){

n = n*(n-1);

n = n-1;

System.out.println (n);

}

}

}[/code]

Será que alguém pode me ajudar…?[/quote]

Não precisa de dois laços.

Pense no seguinte:

O resultado parcial (que na última iteração vira resultado final) do fatorial é uma coisa. A quantidade de iterações, é outra coisa totalmente distinta. Do jeito que você está fazendo, está utilzando a mesma variável (n) para fazer as duas coisas. Use variáveis distintas para cada coisa para resolver o problema.

Usando o comentário explicativo do regis_hideki como base, ao começar a programar, utilize quantas variáveis achar necessário para resolver o problema e com o tempo vc vai ganhando experiência e “enxugando” mais seus códigos.

static int calculaFat(int n){ if( n == 0 ){ return 1; }else return n * calculaFat(n - 1); } }
Tem como fazer com recursividade também, dá uma olhada…

Amigão, não precisa fazer n = n*(n-1)

ve o que vc ta fazendo:

N é 4 ne?

n=n*(n-1)
n=4*4-1
n=23

so que vc fez um loop que diz que While(n>=1)
ou seja enquanto n>=1 repita!
isso da loop infinito pois n nunca vai ser menor ou igual a 1

pode apagar isso e o resto pode deixar como está:

while esta certo.
e n=n-1 tambem esta certo.
pq n=4-1=3
e ele vai repetir enquanto(while) n>=1

lembrando que o fatorial de zero é 1 entao se for o caso teria que colocar uma condicional por ai mas como ja determinasse qual seria o numero para tirar o fatorial então ta de boa

espero ter ajudado