Neste programa, você aprenderá a encontrar o fatorial de um número usando o loop for e while em Java.
Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação Java:
- Java para Loop
- Java while e do … while Loop
O fatorial de um número positivo n é dado por:
fatorial de n (n!) = 1 * 2 * 3 * 4 * … * n
Exemplo 1: Encontre o fatorial de um número usando o loop for
public class Factorial ( public static void main(String() args) ( int num = 10; long factorial = 1; for(int i = 1; i <= num; ++i) ( // factorial = factorial * i; factorial *= i; ) System.out.printf("Factorial of %d = %d", num, factorial); ) )
Resultado
Fatorial de 10 = 3628800
Neste programa, usamos o loop for para percorrer todos os números entre 1 e o número dado num (10), e o produto de cada número até num é armazenado em um fatorial de variável.
Usamos long em vez de int para armazenar grandes resultados de fatorial. No entanto, ainda não é grande o suficiente para armazenar o valor de números maiores (digamos 100).
Para resultados que não podem ser armazenados em uma variável longa, usamos a BigInteger
variável declarada na java.math
biblioteca.
Exemplo 2: Encontre o fatorial de um número usando BigInteger
import java.math.BigInteger; public class Factorial ( public static void main(String() args) ( int num = 30; BigInteger factorial = BigInteger.ONE; for(int i = 1; i <= num; ++i) ( // factorial = factorial * i; factorial = factorial.multiply(BigInteger.valueOf(i)); ) System.out.printf("Factorial of %d = %d", num, factorial); ) )
Resultado
Fatorial de 30 = 265252859812191058636308480000000
Aqui, em vez de long
, usamos BigInteger
fatorial de variável.
Uma vez que, *
não pode ser usado com BigInteger
, em vez disso usamos multiply()
para o produto. Além disso, num deve ser convertido para BigInteger
para multiplicação.
Da mesma forma, também podemos usar um loop while para resolver esse problema.
Exemplo 3: Encontre o fatorial de um número usando o loop while
public class Factorial ( public static void main(String() args) ( int num = 5, i = 1; long factorial = 1; while(i <= num) ( factorial *= i; i++; ) System.out.printf("Factorial of %d = %d", num, factorial); ) )
Resultado
Fatorial de 5 = 120
No programa acima, ao contrário de um loop for, temos que incrementar o valor de i dentro do corpo do loop.
Embora ambos os programas sejam tecnicamente corretos, é melhor usar o loop for neste caso. É porque o número da iteração (até num) é conhecido.
Visite esta página para aprender a encontrar o fatorial de um número usando recursão.