Questão de Algoritmos e Estrutura de Dados — Algoritmos — Instituto Consulplan 2025
Algoritmos e Estrutura de Dados›Algoritmos
Código
qg555033
Banca
Instituto Consulplan
Órgão
Câmara de Mariana - MG
Ano
2025
Nível
Superior
Cargo
Analista de Sistema
Considere o seguinte trecho de algoritmo:função calcular(valor inteiro x) retorna inteiro {inteiro resultadose (x <= 1) {resultado = 1} senão se (x mod 2 == 0) {resultado = x / 2 + calcular(x - 1)} senão {resultado = x * 3 + calcular(x - 2)}retorna resultado}início {inteiro num = 5inteiro res = calcular(num)escreva("Resultado: ", res)}A saída do programa após sua execução será:
AResultado: 16
BResultado: 25
CResultado: 28
DResultado: 34
Revelar gabarito e comentário▾
GabaritoB — Resultado: 25
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Recursividade: execução de função recursiva
Gabarito: letra B — Resultado: 25. A função calcular(5), por ser ímpar (x > 1 e x mod 2 ≠ 0), executa 5 * 3 + calcular(3). Por sua vez, calcular(3) também é ímpar e resulta em 3 * 3 + calcular(1). Como calcular(1) retorna 1 (caso base), temos 9 + 1 = 10 e, finalmente, 15 + 10 = 25.
A questão testa a capacidade de simular manualmente uma função recursiva, atentando para as condições de parada e as chamadas recursivas conforme a paridade do argumento.
Alternativa A — ❌ Incorreta
O valor 16 seria obtido se, por engano, a expressão para ímpar fosse x * 2 em vez de x * 3, ou se houvesse erro na soma das chamadas recursivas. A simulação correta resulta em 25.
Alternativa B — ✅ Correta ⟵ GABARITO
Como demonstrado, calcular(5) = 25. A função respeita a definição: para x <= 1 retorna 1; para x par retorna x/2 + calcular(x-1); para x ímpar retorna x*3 + calcular(x-2). Executando passo a passo:
O valor 28 poderia surgir se a condição de paridade fosse invertida (tratar ímpar como par) ou se a recursão usasse calcular(x-1) no lugar de calcular(x-2) para ímpar. Nenhuma dessas alterações está no algoritmo dado.
Alternativa D — ❌ Incorreta
O valor 34 não corresponde a nenhuma combinação correta das operações. Provavelmente resulta de erro na ordem das chamadas ou na aplicação dos operadores aritméticos.
PEGA ESSA DICA!
Para resolver funções recursivas em provas, sempre comece identificando o caso base (condição de parada) e depois expanda as chamadas recursivas a partir do valor de entrada. Monte uma árvore de recursão se necessário, substituindo de baixo para cima. Treine simulações manuais para ganhar agilidade.