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:Ao final da execução do programa, quantas chamadas à função recursiva “calculo” terão sido realizadas?
A1.
B5.
C6.
D9.
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.
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.
De onde vem cada valor: = passo 1: chamada inicial · = passo 2: chamadas recursivas
NÃO CAIA NESSA!
Somar incorretamente ou esquecer de incluir a chamada inicial.