Módulo 9 - Dividir para conquistar e a recursão

Caso base e caso recursivo: onde a recursão para

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026

O que você vai aprender

  • Identificar o caso base (onde a recursão para) e o caso recursivo (onde chama a si mesma).
  • Entender que o caso base dá a resposta direta, sem nova chamada.
  • Reconhecer a recursão infinita causada por caso base ausente ou inalcançável.
  • Escrever uma função recursiva simples com as duas partes.

As duas partes de toda recursão

Se a recursão fosse uma escada que você desce, o caso recursivo seria o gesto de descer mais um degrau, e o caso base seria o chão, o último degrau, onde você para de descer. Toda função recursiva bem construída tem os dois. O caso recursivo é a parte que chama a si mesma para um caso menor, encolhendo o problema. O caso base é o caso tão simples que a resposta é imediata, sem precisar chamar mais nada. Na contagem regressiva da aula anterior, o caso recursivo era escrever o número e chamar a contagem para o número menos um; o caso base era o número ter chegado a zero, quando a função só grita já e para. Sem o caso base, a escada não teria chão, e a função desceria degraus para sempre.

função fatorial(n)
  se n <= 1 então
    retorne 1          // CASO BASE: resposta direta, não chama mais
  senão
    retorne n * fatorial(n - 1)   // CASO RECURSIVO: chama para o caso menor
  fim
fim

fatorial(4)   // 4 * fatorial(3) = 4 * 3 * fatorial(2) = 4 * 3 * 2 * 1 = 24

As duas partes lado a lado: o caso base para em n igual a 1; o caso recursivo multiplica n pela recursão de n menos um.

Uma escada descendo em degraus rotulados fatorial(4), fatorial(3), fatorial(2) e, no último degrau apoiado no chão, fatorial(1) com uma placa CASO BASE, resposta 1. Setas descem degrau a degrau na ida e sobem de volta na volta, multiplicando os valores até 24 no topo.
A recursão desce até o caso base (o chão) e volta subindo, combinando os resultados. Sem o chão, desceria sem fim.

O vilão: a recursão infinita

Assim como o laço tem o vilão do laço infinito, a recursão tem o dela: a recursão infinita. Ela nasce de dois descuidos. O primeiro é esquecer o caso base: a função só tem a parte que chama a si mesma, então nunca encontra um lugar para parar. O segundo é ter um caso base que nunca é alcançado, porque o problema não encolhe na direção certa. Se a contagem regressiva chamasse a si mesma com o número mais um em vez de menos um, ela se afastaria do zero para sempre, e o caso base, embora exista, jamais chegaria. Em ambos os casos, a função chama a si mesma sem parar, e o programa, diferente do laço infinito que só trava, costuma estourar com um erro específico quando a pilha de chamadas enche, assunto da próxima aula.

🎮 Jogo da aula

A recursão que não para

Esta função deveria somar os números de n até 1, mas roda para sempre. Toque na linha que causa a recursão infinita.

Escrevendo recursão com segurança

Para escrever recursão sem cair na armadilha, siga um roteiro simples que funciona sempre. Primeiro, pergunte: qual é o caso mais simples possível, aquele cuja resposta eu sei de cabeça, sem pensar? Esse é o seu caso base, e você o escreve primeiro, com a resposta direta. Depois, pergunte: como eu resolvo o caso geral usando uma versão menor do mesmo problema? Essa é a chamada recursiva, e você precisa garantir que o argumento encolha na direção do caso base. Se as duas partes estão no lugar, o caso base existe e é alcançável, a recursão funciona. É a mesma disciplina que você usa para não escrever laço infinito: garantir que exista uma condição de parada e que o programa caminhe até ela. Comece pelo fim (o caso base) e a recursão para de assustar.

Teste rápido

Qual é o papel do caso base numa função recursiva?

Perguntas frequentes

O que é o caso base?
É o caso mais simples da recursão, aquele cuja resposta é direta e que não chama a função de novo. Ele é o freio que faz a recursão parar, como o último degrau de uma escada. Toda função recursiva precisa de pelo menos um caso base que seja realmente alcançado.
O que é o caso recursivo?
É a parte da função que resolve o problema chamando a si mesma para um caso menor. Ele encolhe o problema em direção ao caso base. Caso base e caso recursivo trabalham juntos: um para, o outro avança rumo à parada. Faltar qualquer um deles quebra a recursão.
O que causa recursão infinita?
Duas coisas: esquecer o caso base (a função só chama a si mesma e nunca para) ou ter um caso base que nunca é alcançado (o problema não encolhe na direção certa, como somar em vez de subtrair). Nos dois casos, a função chama a si mesma sem fim, e o programa costuma estourar.
Como escrevo uma recursão sem errar?
Comece pelo caso base: pergunte qual é o caso mais simples, cuja resposta você sabe de cabeça, e escreva-o. Depois escreva o caso recursivo resolvendo o problema com uma versão menor de si mesmo, garantindo que o argumento encolha rumo ao caso base. Com as duas partes certas, a recursão funciona.
Recursão infinita trava o computador como o laço infinito?
É parecido, mas costuma terminar diferente. O laço infinito trava rodando. A recursão infinita empilha chamada sobre chamada até esgotar um espaço reservado (a pilha de chamadas), e aí o programa estoura com um erro específico, em vez de rodar para sempre. Esse mecanismo é o tema da próxima aula.
Uma recursão pode ter mais de um caso base?
Pode. Alguns problemas têm mais de um caso simples que precisa de resposta direta. Por exemplo, uma função sobre a sequência de Fibonacci costuma ter dois casos base. O importante é que todos os caminhos da recursão levem a algum caso base alcançável, para que sempre haja uma parada.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.