Analise a seguinte função, elaborada na linguagem C de prog...

Próximas questões
Com base no mesmo assunto
Ano: 2021 Banca: VUNESP Órgão: EsFCEx Prova: VUNESP - 2021 - EsFCEx - Informática |
Q1815178 Programação

Analise a seguinte função, elaborada na linguagem C de programação.

func_f(n)

int n; { int a, b; if (n == 0) return(1); a = n – 1; b = func_f(a); return(n*b); } Caso, no programa principal, seja colocada a linha printf(”%d”, func_f(4)); o valor impresso na saída padrão será:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - 24

A questão apresentada aborda conceitos fundamentais de programação em C, particularmente a recursão. A compreensão de funções recursivas é essencial para resolver problemas desse tipo, onde uma função se chama a si mesma para calcular um valor.

Vamos analisar a função func_f: ela recebe um número inteiro n como parâmetro e utiliza uma estrutura if para verificar se n é igual a 0. Se for, a função retorna 1. Caso contrário, a função chama a si mesma com o argumento n - 1 e depois multiplica o resultado por n.

Dessa forma, a função func_f está calculando o fatorial de n. O fatorial de um número n, denotado por n!, é o produto de todos os números inteiros positivos de 1 até n. Assim, para n = 4, a sequência de chamadas recursivas seria:

  • func_f(4) = 4 * func_f(3)
  • func_f(3) = 3 * func_f(2)
  • func_f(2) = 2 * func_f(1)
  • func_f(1) = 1 * func_f(0)
  • func_f(0) = 1

Substituindo de volta, temos:

  • func_f(1) = 1 * 1 = 1
  • func_f(2) = 2 * 1 = 2
  • func_f(3) = 3 * 2 = 6
  • func_f(4) = 4 * 6 = 24

A função retorna 24, que é o valor correto impresso quando chamamos printf("%d", func_f(4));.

Agora, vejamos por que as outras alternativas estão incorretas:

B - 0: Este resultado não seria possível, já que a função nunca retorna 0 para nenhum valor de n.

C - 1: Esta saída confundiria o comportamento base da função, mas ela só retorna 1 quando n = 0, o que não é o caso aqui.

D - 6: Este valor representa o fatorial de 3. A função, no entanto, está calculando o fatorial de 4.

E - 12: Este resultado é incorreto porque não corresponde a nenhum fatorial de 4 ou a qualquer valor intermediário no cálculo recursivo.

Espero que esta explicação tenha ajudado a compreender a lógica por trás da função recursiva e como chegar à solução correta. Se ainda restarem dúvidas, sinta-se à vontade para perguntar!

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

O examinador tentou dar uma complicada, mas a resolução questões recursivas seguem sempre o mesmo padrão.

 

Primeiro monta as funções:

f(4) = 4*f(3)

f(3) = 3*f(2)

f(2) = 2*f(1)

f(1) = 1*f(0)

f(0) = 1

 

Depois resolve de trás pra frente:

f(0) = 1

f(1) = 1*1 = 1

f(2) = 2*1 = 2

f(3) = 3*2 = 6

f(4) = 4*6 = 24

laço 1:

4-1 = 3

laço 2:

3-1 = 2

laço 3:

2-1 = 1

laço 4:

1-1 = 0

laço 5 (Saiu do laço)

4x3 = 12

4x2 = 8

4x1 = 4

4x0 = 0

Somatório = 24

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo