Questão nº 55
Questão de Gestão de TI · FGV DPGE-RJ 2014 (nº 55)
FGV2014Técnico Superior Especializado em Gestão em Tecnologia da InformaçãoGestão de TI
Gabarito: Cver comentário ↓
Seja a função recursiva f definida como
```
f(a,b)
se b = 0 então
retorna a
senão
retorna f(b, a MOD b)
```
onde x MOD y é o resto da divisão de x por y. O valor de f (30, 21) é
- A0
- B1
- C3 (alternativa correta)
- D7
- E9
Resposta comentada
Gabarito Alternativa C
Esta função recursiva calcula o Máximo Divisor Comum (MDC) de dois números inteiros usando o Algoritmo de Euclides. O MDC é o maior número que divide ambos os números sem deixar resto, e x MOD y é o resto da divisão de por .
- (A) Incorreta: O valor 0 só seria retornado se o primeiro argumento (
a) fosse 0 na chamada final, o que não acontece aqui. - (B) Incorreta: 1 é um divisor comum, mas não o maior divisor comum de 30 e 21.
- (C) Correta: Vamos traçar a execução:
f(30, 21):b(21) não é 0. Chamaf(21, 30 MOD 21).30 MOD 21 = 9. Então, chamaf(21, 9).f(21, 9):b(9) não é 0. Chamaf(9, 21 MOD 9).21 MOD 9 = 3. Então, chamaf(9, 3).f(9, 3):b(3) não é 0. Chamaf(3, 9 MOD 3).9 MOD 3 = 0. Então, chamaf(3, 0).f(3, 0):b(0) é 0. Retornaa(3).
O valor final retornado é 3, que é o MDC de 30 e 21.
- (D) Incorreta: 7 não é um divisor de 30, nem de 21.
- (E) Incorreta: O valor 9 aparece como um resto intermediário (
30 MOD 21 = 9) durante o cálculo. Um erro comum é confundir um resto intermediário com o resultado final do MDC, que só é encontrado quando o resto da divisão se torna 0.
Fonte: FGV DPGE-RJ 2014 Técnico Superior Especializado em Gestão em Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.