Como Calcular o Fatorial em PHP Usando Laços (FOR, WHILE e DO WHILE)

O que você vai aprender neste tutorial

  • O que é o Fatorial na matemática e qual a sua lógica.
  • Como criar um algoritmo em PHP para calcular o fatorial de qualquer número.
  • Implementações práticas utilizando os laços WHILE, FOR e o temido DO WHILE.

O que é o Fatorial de um Número?

O fatorial de um número inteiro positivo (representado pelo símbolo !), é o resultado da multiplicação desse número por todos os seus antecessores maiores que zero.

Por exemplo, chamamos fatorial de um número n, representado por n!, o seguinte cálculo matemático:
n! = 1 x 2 x 3 x ... x (n-1) x n

Vamos ver isso na prática, calculando os primeiros fatoriais:

  • 2! = 2 x 1 = 2
  • 3! = 3 x 2 x 1 = 6
  • 4! = 4 x 3 x 2 x 1 = 24
  • 5! = 5 x 4 x 3 x 2 x 1 = 120

A lógica de programação por trás disso é muito simples: se o usuário insere um valor n, basta multiplicarmos 1 por 2, por 3, por 4... até chegar no valor limite n. O fatorial é o produto final de todas essas multiplicações acumuladas.

Script em PHP: Como calcular o Fatorial

Para construir nosso código, precisaremos de algumas variáveis fundamentais. Vamos armazenar em $n o número digitado pelo usuário através do nosso formulário HTML.

O resultado das multiplicações será guardado na variável $fatorial. ⚠️ Atenção: Diferente de somas, onde inicializamos variáveis com 0, na multiplicação precisamos iniciar a variável $fatorial com 1. Se iniciarmos com zero, qualquer multiplicação por zero será zero, e nosso script falharia!

Por fim, usaremos uma variável de controle chamada $count, que começará em 1 e irá até o valor de $n, aumentando de um em um.

1. Cálculo de Fatorial usando o laço WHILE

Nesta abordagem, o laço WHILE (enquanto) verifica a condição antes de executar o bloco. Adicionamos a função intval() para garantir a segurança dos dados recebidos.

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Fatorial com WHILE - PHP Progressivo</title>
</head>
<body>
    <form action="" method="get">
        <label for="number">Fatorial de:</label>
        <input type="number" name="number" id="number" min="0" required />
        <input type="submit" value="Calcular" />
    </form> 

    <?php 
    if (isset($_GET['number'])) {
        $n = intval($_GET['number']);
        $fatorial = 1;
        $count = 1;
        
        while ($count <= $n) {
            $fatorial *= $count; // Equivalente a: $fatorial = $fatorial * $count;
            $count++;
        } 
        
        echo "<h3>O fatorial de $n é: $fatorial</h3>";
    }
    ?>
</body>
</html>

Estude com a Melhor Didática 🚀

Adquira a Apostila PHP Progressivo e tenha o conteúdo do site organizado em PDF. Ideal para quem quer aprender lógica e programação sem distrações.

Baixar Apostila (PDF)

2. Cálculo de Fatorial usando o laço FOR

Muitos programadores preferem usar o laço FOR para este tipo de problema matemático. O motivo? Ele é mais compacto e permite declarar a variável de controle, a condição de parada e o incremento na mesma linha de código.

<?php 
// Assumindo que o formulário HTML já existe acima
if (isset($_GET['number'])) {
    $n = intval($_GET['number']);
    $fatorial = 1;
    
    // O laço FOR agrupa a inicialização, a condição e o incremento
    for ($count = 1; $count <= $n; $count++) {
        $fatorial *= $count;
    }
    
    echo "<h3>O fatorial de $n é: $fatorial</h3>";
}
?>

3. Desafio: Consegue resolver usando DO WHILE?

O laço do while é ligeiramente diferente, pois ele executa o bloco de código pelo menos uma vez antes de verificar a condição. Veja como fica a solução para gerar o nosso fatorial:

<?php 
if (isset($_GET['number'])) {
    $n = intval($_GET['number']);
    $fatorial = 1;
    $count = 1;
    
    // Tratativa especial: se for 0!, o fatorial é 1 e pulamos o laço
    if ($n > 0) {
        do {
            $fatorial *= $count;
            $count++;
        } while ($count <= $n);
    }
    
    echo "<h3>O fatorial de $n (usando Do While) é: $fatorial</h3>";
}
?>

🛠️ Dica de Mestre: Note que, no do while, precisamos fazer uma verificação extra com if ($n > 0). Como o bloco do é executado antes da verificação, se o usuário digitasse 0, o script multiplicaria o fatorial e incrementaria a variável desnecessariamente. Dominar essas pequenas diferenças lógicas é o que separa um iniciante de um programador sênior!

Nenhum comentário: