Considere o seguinte trecho de algoritmo:função calcular(val...

Próximas questões
Com base no mesmo assunto
Q3408209 Algoritmos e Estrutura de Dados
Considere o seguinte trecho de algoritmo:
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á:
Alternativas

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