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.
filipegpaulo
Então devo colocar outro for dentro deste?
ironmarq
e aí filipegpaulo, fazendo algumas alterações no seu código:
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.
ironmarq
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.
ironmarq
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…
E
edbatistajr
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