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.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Caso base e caso recursivo: onde a recursão para.
Os objetivos desta aula. 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.
Veja o essencial, parte por parte.
As duas partes de toda recursão. Caso base: o caso mais simples, com resposta direta, que NÃO chama a função de novo.
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.
Escrevendo recursão com segurança. Para escrever recursão sem cair na armadilha, siga um roteiro simples que funciona sempre.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
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 = 24As 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.
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.