GeraProva GeraProva Provas com IA para professores do Brasil
Computação9º anoBNCC EF09CO01Difícil⏱ longo

Projete em pseudocódigo uma função recursiva permutar(L) que recebe uma lista L com n elementos distintos e…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF09CO01

Criar soluções de problemas para os quais seja adequado o uso de árvores e grafos para descrever suas informações e automatizá-las usando uma linguagem de programação.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Projete em pseudocódigo uma função recursiva permutar(L) que recebe uma lista L com n elementos distintos e retorna uma lista contendo todas as permutações de L. Descreva o caso base, o passo recursivo, as variáveis usadas e explique como a função evita duplicações. Indique a complexidade temporal em função de n.

✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.

Resposta esperada

Pseudocódigo: funcao permutar(L): se L == [] entao retorne [[]] senao primeiro <- L[0] resto <- L[1:] perms_resto <- permutar(resto) resultado <- [] para cada p em perms_resto faca para pos de 0 ate comprimento(p) faca nova <- copiar(p) inserir primeiro em nova na pos adicionar nova em resultado retorne resultado Explicação: o caso base retorna a lista que contém a lista vazia, representando a permutação única de uma lista vazia. No passo recursivo, retiramos o primeiro elemento e geramos todas as permutações do resto; em seguida inserimos o elemento em todas as posições possíveis de cada permutação obtida, construindo novas listas (variáveis: primeiro, resto, perms_resto, resultado, p, pos, nova). Não há duplicações porque os elementos de L são distintos e cada inserção em posições diferentes produz sequências distintas. Complexidade temporal: T(n)=n*T(n-1)+O(n!*n) = O(n!*n). Profundidade de recursão: n. Espaço requerido: O(n!*n) para armazenar todas as permutações.

Explicação

A solução apresentada descreve claramente a lógica de permutação, detalhando o caso base e o passo recursivo, além de explicar como as permutações são geradas sem duplicações devido à distinção dos elementos. A complexidade temporal é adequadamente analisada, considerando o número de permutações e o tempo necessário para inserções. A descrição das variáveis utilizadas facilita a compreensão do funcionamento da função e sua implementação.

Raio-X da questão

Dificuldade Difícil
Bloom Criar
Leitura alto
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade multipla
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ interpretativa🧩 desafio
🎯 Conceito central

função recursiva, permutações

📌 Objetivo

avaliacao

🧱 Pré-requisitos

funções recursivas · estruturas de dados

📚 Reveja

Revisar conceitos de recursão e permutações.

⚠️ Erro mais comum

O aluno pode confundir a lógica de recursão com iteração, resultando em uma implementação que não gera todas as permutações corretamente.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Programação - Programação usando grafos e árvores

🔎 Procurar outra questão

Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.

Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.