tenho esse código pronto para descobrir os fatoriais dos números de 1 a 10 , só que não intendo essa lógica , um caso é que fatorial = 1 e i = 1 se resolveu colocando fatorial *= i ,
ou seja esse * no nada diz o que?
public class Ex4 {
public static void main(String[] args) {
int fatorial = 1;
for (int i=1; i <= 10; i++){
fatorial *= i;
System.out.println("O fatorial de " + i + " e igual a " + fatorial );
}
}
}
fatorial *= i;
É a mesma coisa que:
fatorial = fatorial * i;
Lendo isso: fatorial recebe o valor atual do fatorial vezes o i
Ok mas se fatorial = 1 e i fica aumentando até 10 então não ia descobrir o fatorial pois assim 1 = 1 * i , se fosse de quatro 1 = 1 * 4 que é 4 , isso não é fatorial , e ai?
Fábio,
A variável fatorial funciona como um acumulador.
A cada iteração(for) fatorial armazena o que tinha antes e multiplica pelo valor de i.
Por exemplo Iteração 1:
int fatorial = 1;
for (int i=1; i <= 10; i++){
fatorial *= i;//fatorial *= 1
//fatorial vale 1 aqui;
System.out.println("O fatorial de " + i + " e igual a " + fatorial );
}
//iteração 2 fatorial vale 1 e i vale 2
for (int i=2; i <= 10; i++){
fatorial *= i;//fatorial *= 2
//fatorial vale 2 aqui
System.out.println("O fatorial de " + i + " e igual a " + fatorial );
}
//iteração 3 fatorial vale 2 e i vale 3
for (int i=3; i <= 10; i++){
fatorial *= i;//fatorial *= 3
//fatorial vale 6 aqui
System.out.println("O fatorial de " + i + " e igual a " + fatorial );
}
E assim por diante até chegar a 10 iterações.
A variável fatorial é um acumulador.
Abs