Questão nº 64

Questão de Fluência em Dados · FGV Receita Federal do Brasil 2023 - Manhã (nº 64)

FGV2023Analista-Tributário da Receita Federal do BrasilFluência em Dados
Gabarito: Dver comentário ↓

Analise o código R a seguir.

```
lista <- function (param) {
if (param > -3) {
temp <- param + lista(param - 3)
print(temp)
} else {
return(0)
}
}
lista(15)
```

Assinale os valores exibidos pela execução desse código, na ordem.

Resposta comentada

Gabarito Alternativa D

Recursão é quando uma função chama a si mesma para resolver um problema, dividindo-o em partes menores até chegar a um caso simples que pode ser resolvido diretamente (o caso base).

  • (A) Incorreta: Esta alternativa apresenta os valores na ordem inversa. A função print(temp) é executada depois que a chamada recursiva lista(param - 3) retorna um valor e temp é calculado. Isso significa que os valores são impressos à medida que as chamadas da função "desempilham" (retornam), começando pela chamada mais profunda (mais próxima do caso base).
  • (B) Incorreta: Os valores calculados estão incorretos. A soma de param com o resultado da chamada recursiva não resulta nesses números.
  • (C) Incorreta: Esta alternativa sugere que a função sempre retorna 0, o que não é verdade, pois os valores de param são somados ao resultado das chamadas recursivas.
  • (D) Correta: A execução da função lista(15) segue a seguinte lógica (assumindo que a função retorna o valor de temp na parte if para que a soma seja numérica, apesar de o R normalmente retornar invisible(NULL) de um print()):
    1. lista(-3): param é -3. -3 > -3 é FALSO. Retorna 0.
    2. lista(0): param é 0. 0 > -3 é VERDADEIRO. temp = 0 + lista(-3) = 0 + 0 = 0. Imprime 0. Retorna 0.
    3. lista(3): param é 3. 3 > -3 é VERDADEIRO. temp = 3 + lista(0) = 3 + 0 = 3. Imprime 3. Retorna 3.
    4. lista(6): param é 6. 6 > -3 é VERDADEIRO. temp = 6 + lista(3) = 6 + 3 = 9. Imprime 9. Retorna 9.
    5. lista(9): param é 9. 9 > -3 é VERDADEIRO. temp = 9 + lista(6) = 9 + 9 = 18. Imprime 18. Retorna 18.
    6. lista(12): param é 12. 12 > -3 é VERDADEIRO. temp = 12 + lista(9) = 12 + 18 = 30. Imprime 30. Retorna 30.
    7. lista(15): param é 15. 15 > -3 é VERDADEIRO. temp = 15 + lista(12) = 15 + 30 = 45. Imprime 45. Retorna 45.
      Os valores são impressos na ordem em que as chamadas recursivas retornam: 0, 3, 9, 18, 30, 45.
  • (E) Incorreta: Os valores calculados estão incorretos e a sequência não corresponde à execução da função.

Fonte: FGV Receita Federal do Brasil 2023 - Manhã Analista-Tributário da Receita Federal do Brasil (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