Questão nº 53

Questão de Suporte · FGV DPGE-RJ 2014 (nº 53)

FGV2014Técnico Superior Especializado em SuporteSuporte
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) é

Resposta comentada

Gabarito Alternativa C

A recursão é uma técnica onde uma função chama a si mesma para resolver um problema, dividindo-o em partes menores até chegar a um caso base que pode ser resolvido diretamente. A função apresentada implementa o Algoritmo de Euclides para encontrar o Máximo Divisor Comum (MDC) entre dois números.

  • (A) Incorreta: O valor 0 seria retornado apenas se o primeiro argumento a fosse 0 no caso base b = 0, o que não ocorre aqui, pois o MDC de números positivos é sempre positivo.
  • (B) Incorreta: 1 é um possível MDC, mas não é o MDC de 30 e 21, que possuem divisores comuns maiores.
  • (C) Correta: A função calcula o MDC de 30 e 21.
    • f(30, 21): b (21) não é 0. Chama f(21, 30 MOD 21). 30 MOD 21 = 9. Então, chama f(21, 9).
    • f(21, 9): b (9) não é 0. Chama f(9, 21 MOD 9). 21 MOD 9 = 3. Então, chama f(9, 3).
    • f(9, 3): b (3) não é 0. Chama f(3, 9 MOD 3). 9 MOD 3 = 0. Então, chama f(3, 0).
    • f(3, 0): b (0) é 0. Retorna a, que é 3.
  • (D) Incorreta: 7 é um divisor de 21, mas não de 30, portanto não pode ser o MDC.
  • (E) Incorreta: 9 é o resto da primeira divisão (30 MOD 21 = 9) e aparece como segundo argumento em uma chamada recursiva (f(21, 9)). A armadilha da banca aqui é confundir os valores intermediários ou restos das divisões com o resultado final do MDC.

Fonte: FGV DPGE-RJ 2014 Técnico Superior Especializado em Suporte (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho