Skip to content
Aplicações Informáticas B · 12.º Ano

Ideias de aprendizagem ativa

Recursividade

A recursividade desafia os alunos a pensar de forma abstrata sobre problemas divididos em partes menores, uma competência essencial em programação e matemática. Trabalhar em pares e grupos durante estas atividades torna visível a estrutura profunda dos problemas, ajudando os alunos a compreenderem porque é que a recursividade é poderosa e quando deve ser usada.

Aprendizagens EssenciaisDGE: Secundário - Algoritmia e ProgramaçãoDGE: Secundário - Pensamento Computacional
20–45 minPares → Turma inteira4 atividades

Atividade 01

Flipped Classroom30 min · Pares

Comparação em Pares: Fatorial Recursivo vs Iterativo

Os alunos implementam o fatorial em Python de forma recursiva e iterativa. Em seguida, cronometram execuções para n=10, 20, 30 e comparam eficiência. Discutem vantagens em cada abordagem.

Compare a implementação de soluções recursivas e iterativas para o mesmo problema.

Sugestão de FacilitaçãoDurante a Comparação em Pares do fatorial, peça a cada aluno que cronometre ambas as versões em Python para reforçar a discussão sobre eficiência.

O que observarApresente aos alunos o código de uma função recursiva simples (ex: cálculo do fatorial) e uma versão iterativa. Peça-lhes para escreverem num pequeno papel: 1) Qual a principal diferença entre as duas implementações? 2) Qual o risco associado à função recursiva se o caso base for omitido?

CompreenderAplicarAnalisarAutogestãoAutoconsciência
Gerar Aula Completa

Atividade 02

Flipped Classroom45 min · Pequenos grupos

Pequenos Grupos: Torres de Hanói Simuladas

Grupos constroem uma versão recursiva das Torres de Hanói para 3 discos, usando pilhas para simular movimentos. Registam o número de chamadas recursivas e verificam a solução ótima. Apresentam o código à turma.

Analise os riscos de uma função recursiva sem uma condição de paragem adequada.

Sugestão de FacilitaçãoNas Torres de Hanói em pequenos grupos, forneça tabuleiros físicos ou simulações digitais para que os alunos visualizem o padrão recursivo de movimento.

O que observarDurante a aula, apresente um problema simples (ex: contar o número de nós numa árvore binária pequena). Peça aos alunos para, em pares, esboçarem rapidamente a lógica de uma solução recursiva, identificando o caso base e o passo recursivo. Circule pela sala para verificar a compreensão.

CompreenderAplicarAnalisarAutogestãoAutoconsciência
Gerar Aula Completa

Atividade 03

Flipped Classroom35 min · Turma inteira

Aula Inteira: Árvore de Recursão Fibonacci

A turma traça colectivamente a árvore de chamadas para Fibonacci(5) num quadro. Depois, codificam e executam com depurador, contando chamadas redundantes. Discutem memoização como optimização.

Explique como a recursividade pode simplificar a lógica de certos algoritmos.

Sugestão de FacilitaçãoNa Árvore de Recursão Fibonacci, peça aos alunos que desenhem a árvore de chamadas passo a passo para internalizarem o papel do caso base.

O que observarInicie uma discussão em grupo com a seguinte questão: 'Em que situações a elegância de uma solução recursiva pode não compensar a potencial sobrecarga de memória ou o risco de erros associados à pilha de chamadas? Dê exemplos concretos.'

CompreenderAplicarAnalisarAutogestãoAutoconsciência
Gerar Aula Completa

Atividade 04

Flipped Classroom20 min · Individual

Individual: Depuração de Recursão Infinita

Cada aluno recebe uma função recursiva sem base e identifica o erro. Adicionam a condição e testam com inputs variados, registando o número máximo de chamadas antes do crash.

Compare a implementação de soluções recursivas e iterativas para o mesmo problema.

Sugestão de FacilitaçãoNa Depuração de Recursão Infinita, mostre-lhes como usar um debugger para interromper a execução e analisar a pilha de chamadas em tempo real.

O que observarApresente aos alunos o código de uma função recursiva simples (ex: cálculo do fatorial) e uma versão iterativa. Peça-lhes para escreverem num pequeno papel: 1) Qual a principal diferença entre as duas implementações? 2) Qual o risco associado à função recursiva se o caso base for omitido?

CompreenderAplicarAnalisarAutogestãoAutoconsciência
Gerar Aula Completa

Algumas notas sobre lecionar esta unidade

Ensinar recursividade requer um equilíbrio entre teoria e prática imediata. Evite apresentar a recursividade como um conceito abstrato: use sempre exemplos concretos e problemas do mundo real para evitar que os alunos memorizem padrões sem compreenderem. Pesquisas mostram que a simulação manual de chamadas recursivas, mesmo com papel e lápis, constrói uma base mais sólida do que a exposição teórica.

Os alunos conseguirão distinguir quando a recursividade simplifica ou complica a resolução de problemas, identificar corretamente os casos base e prever riscos como o overflow da pilha. Espera-se que possam comparar soluções recursivas e iterativas, justificando as suas escolhas com exemplos concretos.


Atenção a estes erros comuns

  • Durante a Comparação em Pares: Fatorial Recursivo vs Iterativo, alguns alunos podem assumir que a recursividade é sempre menos eficiente sem testar.

    Peça aos pares que meçam o tempo de execução de ambas as versões com entradas crescentes e registem os resultados num gráfico partilhado para discutirem padrões observados.

  • Durante as Torres de Hanói Simuladas, os alunos podem achar que qualquer problema iterativo se traduz diretamente em recursivo sem reformulação.

    Peça aos grupos para reescreverem a solução iterativa como recursiva, destacando que o caso base da torre de 1 disco é a condição que permite dividir o problema.

  • Durante a Depuração de Recursão Infinita, os alunos podem culpar bugs aleatórios pela falta de condição de paragem.

    Peça-lhes que inspecionem a pilha de chamadas no debugger e identifiquem visualmente o crescimento infinito antes de corrigirem o código.


Metodologias usadas neste resumo