Nome:Turma:Data:
Computação · 8º ano · Recursão desplugada

Fila recursiva e fatorial

BNCC: EF08CO01 Construir soluções de problemas usando a técnica de recursão e automatizá-las com uma linguagem de programação.

Na recursão, um problema é resolvido usando o mesmo problema, só que menor. Ela sempre precisa de um caso base, a situação em que para.

1. A fila recursiva

Seis pessoas estão em fila. A última quer saber quantas pessoas há na frente dela. Cada uma só pode perguntar à pessoa da frente e responder a quem está atrás. A primeira da fila sabe que não há ninguém na frente: esse é o caso base.

Pessoa6ª (última)5ª4ª3ª2ª1ª
Ida: pergunta para5ªninguém
Volta: responde0

2. Fatorial

fatorial(n) = n × fatorial(n − 1), e fatorial(1) = 1. Complete as chamadas e depois volte calculando.

ChamadaViraResultado na volta
fatorial(5)5 × fatorial(4)
fatorial(4)
fatorial(3)
fatorial(2)
fatorial(1)caso base: 11

3. Escreva a sua

A função soma(n) soma todos os números de 1 até n. Complete:

soma(n):
    se n = 1 então
        devolva ____
    senão
        devolva n + soma(____)
    fim

Quanto é soma(4)? Mostre as chamadas:

4. Sem caso base

O que aconteceria se a função fatorial não tivesse o caso base?

Gabarito e orientações para o professor

Condução (35 min): faça a fila de verdade com seis estudantes. Escreva no quadro a ida (as perguntas) e a volta (as respostas). Mostre que a resposta só aparece quando o caso base é atingido.

Gabarito. 1) Ida: 6ª pergunta à 5ª, 5ª à 4ª, 4ª à 3ª, 3ª à 2ª, 2ª à 1ª. Volta: 1ª responde 0, 2ª responde 1, 3ª responde 2, 4ª responde 3, 5ª responde 4, 6ª fica sabendo que há 5. 2) fatorial(4) = 4 × fatorial(3); fatorial(3) = 3 × fatorial(2); fatorial(2) = 2 × fatorial(1). Volta: 1, 2, 6, 24, 120. 3) devolva 1; soma(n − 1). soma(4) = 4 + soma(3) = 4 + 3 + soma(2) = 4 + 3 + 2 + 1 = 10. 4) A função se chamaria sem parar e o programa travaria.

Use junto com: 📋 Listas, recursão e algoritmos de ordenação