O cálculo do fatorial é comum em programação e é amplamente utilizado em matemática, especialmente em áreas como análise combinatória, probabilidades e algoritmos de otimização. O fatorial de um número n
, representado por n!
, é o produto de todos os inteiros positivos de 1
até n
. Neste post, aprenda a calcular o fatorial em Java.
Definição de fatorial
Para um número n
, o fatorial é calculado assim:
n! = n * (n - 1) * (n - 2) * ... * 1
- Por definição,
0! = 1
Por exemplo:
5! = 5 * 4 * 3 * 2 * 1 = 120
Vamos explorar duas maneiras de calcular o fatorial em Java: usando um loop e usando recursão.
Abordagem 1: Calculando o fatorial usando um loop
A forma mais direta de calcular o fatorial de um número é usar um laço for
para multiplicar cada número de 1
até n
.
public class FatorialLoop {
public static int fatorial(int n) {
int resultado = 1;
for (int i = 1; i <= n; i++) {
resultado *= i;
}
return resultado;
}
public static void main(String[] args) {
int numero = 5;
System.out.println("O fatorial de " + numero + " é: " + fatorial(numero));
}
}
Saída:
O fatorial de 5 é: 120
Explicação do Código:
- Iniciamos
resultado
com 1 e multiplicamos por cada número de1
atén
. - No final do loop,
resultado
conterá o valor den!
.
Abordagem 2: Calculando o fatorial usando recursão
A recursão é uma abordagem em que a função chama a si mesma até atingir uma condição base, neste caso, quando n
é 0
ou 1
.
public class FatorialRecursivo {
public static int fatorial(int n) {
if (n <= 1) {
return 1;
}
return n * fatorial(n - 1);
}
public static void main(String[] args) {
int numero = 5;
System.out.println("O fatorial de " + numero + " é: " + fatorial(numero));
}
}
Saída:
O fatorial de 5 é: 120
Explicação do Código:
- A função
fatorial
chama a si mesma comn - 1
até atingir o caso base (quandon
é1
ou0
). - A multiplicação dos valores retornados forma o cálculo do fatorial.
Abordagem 3: Usando a classe BigInteger para grandes valores
Para números muito grandes, como 100!
, o resultado ultrapassa o limite de armazenamento dos tipos inteiros padrão (int
e long
). Para esses casos, podemos usar a classe BigInteger
da biblioteca java.math
.
import java.math.BigInteger;
public class FatorialBigInteger {
public static BigInteger fatorial(int n) {
BigInteger resultado = BigInteger.ONE;
for (int i = 1; i <= n; i++) {
resultado = resultado.multiply(BigInteger.valueOf(i));
}
return resultado;
}
public static void main(String[] args) {
int numero = 100;
System.out.println("O fatorial de " + numero + " é: " + fatorial(numero));
}
}
Saída (exemplo para 100!):
O fatorial de 100 é: 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
Outro exemplo prático
import java.util.Scanner;
public class Conceitos_basicos {
public static void main(String[] args) throws InterruptedException {
int n, fat = 1;
Scanner sc = new Scanner(System.in);
do
{
System.out.print("Digite um número inteiro: ");
n = sc.nextInt();
if(n < 0)
{
System.out.println(n+" não é um numero natural. Digite um número positivo.");
Thread.sleep(2000); //pausa por 2 segundos
}
} while(n < 0);
for(int i=1; i<=n; i++)
{
fat *= i;
}
System.out.println(n+"! = " +fat);
}
}
}
Calcular o fatorial de um número em Java é simples com um loop ou recursão, dependendo do problema e do tamanho dos valores.
A classe BigInteger
é essencial para lidar com valores grandes, que ultrapassam a capacidade dos tipos numéricos padrão.
Domine as boas práticas com projetos práticos que vão te ajudar a desenvolver sistemas e se destacar no mercado de programação.
Clique na imagem abaixo e conheça mais detalhes do nosso curso:
Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?
Sobre o Autor
0 Comentários