Uma equipe desenvolve uma central meteorológica para regiões remotas. O microcontrolador do equipamento possui…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Identificar o comportamento dos algoritmos no que diz respeito ao consumo de recursos como tempo de execução, espaço de memória e energia, entre outros.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Uma equipe desenvolve uma central meteorológica para regiões remotas. O microcontrolador do equipamento possui apenas 1 kB de RAM, e o programa precisa calcular o fatorial de um número n, com n igual ou menor que 20. Para realizar essa tarefa, a equipe considera cinco abordagens: um algoritmo recursivo, que chama fatorial(n-1) até alcançar o caso-base; uma estrutura de repetição com um acumulador; uma tabela pré-calculada, armazenada em um array com 21 posições; um algoritmo com memoização, que guarda os resultados já calculados em um array; e uma biblioteca que mantém em memória uma lista dos fatoriais necessários. Na análise, deve-se considerar o espaço adicional ocupado durante o cálculo, sem contar o armazenamento do próprio código do programa. Com base no texto, qual abordagem apresenta o menor consumo de memória adicional para calcular o fatorial, sem exceder a RAM disponível?
- A) Algoritmo recursivo que chama fatorial(n−1) até alcançar o caso-base.
- B) Algoritmo com memoização que guarda resultados em um array.
- C) Biblioteca que mantém em memória uma lista dos fatoriais necessários.
- D) Estrutura de repetição com um acumulador.
- E) Tabela pré-calculada armazenada em um array com 21 posições.
✅ Resposta correta: alternativa D
Resolução passo a passo
- O problema pede a abordagem com menor memória adicional durante o cálculo, sem contar o código do programa. Passo 2: Na estrutura de repetição com acumulador, usa-se apenas um número fixo de variáveis (n, o acumulador e o contador), ou seja, o consumo extra é constante, independentemente de n. Passo 3: Na recursão, cada chamada fatorial(n-1) empilha um novo quadro na pilha de execução, e para n = 20 surgem até 20 quadros pendentes, o que cresce com n. Passo 4: A tabela pré-calculada ocupa 21 posições fixas de memória, um gasto constante, mas maior que o de duas ou três variáveis. Passo 5: A memoização exige um array que armazena resultados já calculados, também ocupando espaço fixo e ainda com lógica extra de controle. Passo 6: A biblioteca mantém em memória uma lista de fatoriais necessários, o que tende a ser o maior consumo, pois inclui estruturas e sobrecarga do próprio mecanismo. Passo 7: Assim, a alternativa A é errada, pois a recursão consome memória de pilha que cresce com n; a B é errada, pois o array de memoização ocupa espaço extra; a C é errada, pois a lista da biblioteca carrega sobrecarga adicional; a E é errada, pois a tabela de 21 posições ocupa memória fixa desnecessária. Conclusão: a alternativa D é a correta e coincide com o gabarito oficial.
💡 Dica: Compare o uso de memória de cada método considerando o limite de RAM.
Alternativa por alternativa
O aluno acredita que a recursão é a forma mais econômica por não criar arrays nem estruturas auxiliares, esquecendo que cada chamada ocupa um quadro na pilha de execução que se acumula até o caso-base.
Por que engana: Confundir que tabelas pré-calculadas sempre usam menos memória que algoritmos iterativos, sem considerar o tamanho da tabela.
O aluno supõe que a memoização, por reduzir o número de cálculos, também reduz a memória, sem perceber que o array de resultados ocupa espaço adicional proporcional a n.
O aluno acha que uma biblioteca pronta é otimizada e, por isso, usa menos memória, ignorando a sobrecarga de manter uma lista completa de fatoriais em RAM.
A estrutura de repetição utiliza apenas um acumulador e variáveis de controle, mantendo consumo de memória adicional constante, independentemente do valor de n. A recursão precisa manter várias chamadas na pilha, enquanto a tabela pré-calculada, a memoização e a lista da biblioteca exigem espaço para armazenar vários resultados.
O aluno considera que uma tabela pré-calculada é a solução mais rápida e, portanto, a mais simples, sem comparar que 21 posições fixas ocupam mais memória do que simples variáveis de um laço.
Raio-X da questão
consumo de memória em algoritmos
avaliacao
algoritmos recursivos e iterativos · estrutura de dados array
estude estruturas de repetição e uso eficiente de memória em algoritmos
Confundir que tabelas pré-calculadas sempre usam menos memória que algoritmos iterativos, sem considerar o tamanho da tabela.
ciencia_tecnologia
pensamento_critico
cientifico
Questões parecidas com resolução
- Em uma oficina de programação, os estudantes precisam calcular o fatorial de um número inteiro positivo. Uma das…
- Em um projeto de programação, uma equipe precisa calcular o termo de número n da sequência de Fibonacci usando recursão…
- Analise a função recursiva que calcula o fatorial de um número. Qual é a estrutura de dados mais adequada para armazenar…
- Em um programa, você precisa calcular o fatorial de um número usando recursão. Qual parte do algoritmo é crucial para…
- Qual técnica pode ser utilizada para resolver problemas onde a mesma solução pode ser aplicada repetidamente, como…
- Ao projetar um algoritmo recursivo que recalcula repetidamente os mesmos subproblemas, qual técnica baseada em armazenar…
🔎 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
