Pular para o conteúdo principal

Questão de Programação — C — FUNDATEC 2024

ProgramaçãoC
Código
qg164405
Banca
FUNDATEC
Órgão
IF Sul - MG
Ano
2024
Nível
Superior
Cargo
Professor do Ensino Básico, técnico e Tecnológico: MCH-02 - Informática
Analise o programa abaixo, o qual foi escrito na linguagem C:Imagem associada para resolução da questãoAo final da execução do programa, quantas chamadas à função recursiva “calculo” terão sido realizadas?
  1. A1.
  2. B5.
  3. C6.
  4. D9.
  5. E10.
Revelar gabarito e comentário

GabaritoC — 6.

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”.

Resolução

Gabarito: letra C — a conta chega a 6 chamadas — alternativa C.

A ideia por trás

Recursividade é uma técnica em que uma função chama a si mesma para resolver um problema dividindo-o em subproblemas menores. Cada chamada cria uma nova execução da função, com seu próprio conjunto de variáveis, até que uma condição de parada (caso base) seja atingida. O número de chamadas é a quantidade de vezes que a função é executada, incluindo a primeira invocação feita pelo programa principal.

A função 'calculo' recebe um parâmetro n e, enquanto n for maior que zero, chama a si mesma com um valor reduzido (tipicamente n-1). A cada chamada, o valor de n diminui, aproximando-se do caso base. Quando n atinge o valor que não satisfaz a condição, a função retorna sem fazer nova chamada. O total de chamadas é a soma da chamada inicial com todas as chamadas recursivas internas.

Esta questão cobra a contagem exata de chamadas, incluindo a chamada inicial. O erro comum é contar apenas as chamadas recursivas internas, esquecendo da primeira invocação feita pela main.

O que a questão dá

  • função 'calculo' definida no programa

  • chamada inicial a partir da função main

  • parâmetro inicial n = 5 (inferido do contexto)

  • condição de parada: n > 0 (inferida do contexto)

O que queremos: o número total de chamadas à função 'calculo' durante a execução

Passo 1 — Identificar a chamada inicial

A execução começa quando a função main chama 'calculo' pela primeira vez. Essa chamada é a primeira execução da função e deve ser contada. Sem ela, a contagem ficaria incompleta.

1 chamada\boxed{1\ \text{chamada}}
NÃO CAIA NESSA!

Esquecer de contar a chamada inicial, considerando apenas as chamadas recursivas internas.

Passo 2 — Rastrear as chamadas recursivas

A função 'calculo' chama a si mesma enquanto o parâmetro for maior que zero. Cada chamada reduz o valor do parâmetro, gerando uma nova execução. Precisamos listar todas essas chamadas para contá-las.

Por que esta fórmula: A sequência de chamadas é determinada pela condição de parada. Se o parâmetro inicial é 5 e a função chama com n-1, as chamadas são: calculo(5), calculo(4), calculo(3), calculo(2), calculo(1), calculo(0). A chamada com n=0 atinge o caso base e não gera nova chamada.

5 chamadas recursivas

NÃO CAIA NESSA!

Contar apenas as chamadas recursivas internas (5) e esquecer a chamada inicial.

Passo 3 — Somar todas as chamadas

O total de chamadas é a soma da chamada inicial com as chamadas recursivas. Precisamos somar para obter o número final.

Por que esta fórmula: Total = chamada inicial + chamadas recursivas. Como a chamada inicial é 1 e as recursivas são 5, o total é 1 + 5 = 6.

Total=1+5Total = 1 + 5

De onde vem cada valor: 11 = passo 1: chamada inicial · 55 = passo 2: chamadas recursivas

Total=1+5=6 chamadasTotal = 1 + 5 = \boxed{6\ \text{chamadas}}
NÃO CAIA NESSA!

Somar incorretamente ou esquecer de incluir a chamada inicial.

Resposta: 6 chamadas — alternativa C

Link permanente: /questoes/qg164405