Considere o seguinte trecho de algoritmo:função calcular(val...
função calcular(valor inteiro x) retorna inteiro { inteiro resultado se (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 = 5 inteiro res = calcular(num) escreva("Resultado: ", res) }
A saída do programa após sua execução será:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: B - Resultado: 25
1. Tema central da questão
Esta questão aborda recursividade em algoritmos. Ou seja, como uma função pode chamar a si mesma para resolver problemas a partir de casos menores. Entender recursão é essencial para concursos, pois está presente em diversos algoritmos clássicos e na análise de funções matemáticas.
2. Resumo teórico
Recursão é quando uma função resolve um problema ao chamar a si mesma, geralmente até atingir um caso base que termina as chamadas. Aqui, a função calcular(x) retorna:
- 1, se x ≤ 1 (caso base);
- x/2 + calcular(x-1), se x é par;
- x*3 + calcular(x-2), se x é ímpar e x > 1.
Fonte: Cormen et al., Algoritmos: Teoria e Prática (3ª ed.), capítulo sobre recursividade.
3. Justificativa da alternativa correta
Vamos calcular passo a passo:
- calcular(5): 5 é ímpar ⇒ 5*3 + calcular(3)
- calcular(3): 3 é ímpar ⇒ 3*3 + calcular(1)
- calcular(1): caso base ⇒ 1
Agora, volto substituindo:
- calcular(3) = 9 + 1 = 10
- calcular(5) = 15 + 10 = 25
Portanto, a saída correta é 25.
4. Análise das alternativas incorretas
- A - 16: Considera apenas parte da recursão, ignorando os pesos corretos das operações.
- C - 28: Provavelmente confunde os critérios de cálculo, somando ou multiplicando valores de maneira equivocada.
- D - 34: Indica erro na ordem das chamadas recursivas ou no uso de operadores (multiplicação e adição).
5. Estratégias para interpretação
Leia atentamente as condições (caso base e par/ímpar), destaque valores intermediários e evite suposições. Faça cálculos recursivos com calma, anotando cada etapa.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
calcular(5)
5 é ímpar → usa a 3ª condição:
→ resultado = 5 * 3 + calcular(3)
→ resultado = 15 + calcular(3)
calcular(3)
3 é ímpar → 3ª condição:
→ resultado = 3 * 3 + calcular(1)
→ resultado = 9 + calcular(1)
calcular(1)
x <= 1 → primeira condição:
→ resultado = 1
resultado = 15 + 9 + 1
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo