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 de 1 até n.

  • No final do loop, resultado conterá o valor de n!.

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 com n - 1 até atingir o caso base (quando n é 1 ou 0).

  • 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 O JAVA WEB ATRAVÉS DE AULAS PASSO A PASSO, DO BÁSICO AO AVANÇADO!

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:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *