Questão nº 52

Questão de Tecnologia da Informação - Programação · FGV DPE-RS 2023 (nº 52)

FGV2023Técnico - Apoio Especializado (Programador)Tecnologia da Informação - Programação
Gabarito: Dver comentário ↓

Atualmente sob responsabilidade da ECMA International, o Java Script (ECMA 6) utiliza o padrão de arrow function para a definição de funções, aproximando um pouco mais a linguagem do paradigma funcional.
Considerando uma função para a multiplicação de dois valores, na forma recursiva, sua implementação no padrão arrow function é:

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 básico que ela sabe resolver. A multiplicação de dois números, como a×ba \times b, pode ser entendida como somar o número aa a si mesmo bb vezes.

  • (A) Incorreta: Esta alternativa tenta multiplicar a pelo resultado da chamada recursiva, o que não representa a multiplicação como soma repetida. Por exemplo, fnx(3, 2) resultaria em 3 * fnx(3, 1) que é 3 * 3 = 9, e não 6. A armadilha aqui é usar o operador de multiplicação (*) na etapa recursiva, o que leva a um cálculo de potência (aba^b) ou a um resultado incorreto para multiplicação.
  • (B) Incorreta: Esta alternativa adiciona b ao resultado da chamada recursiva (b + fnx(a, b-1)), quando o correto seria adicionar a (o primeiro operando) repetidamente.
  • (C) Incorreta: Esta alternativa inverte a lógica, decrementando a e multiplicando por b, o que não corresponde à definição de multiplicação recursiva como soma repetida de a por b vezes.
  • (D) Correta: Esta é a implementação correta. Ela define a multiplicação de a×ba \times b como a soma de a com o resultado de a×(b1)a \times (b-1). O caso base (b>1) ? ... : a garante que, quando b chega a 1, a função retorna a (pois a×1=aa \times 1 = a), encerrando a recursão e somando a o número correto de vezes.
  • (E) Incorreta: Esta alternativa contém um erro grave: a chamada recursiva fnx(a, b) não altera os argumentos, o que levaria a uma recursão infinita (loop eterno) se a for maior que 1, já que a condição a>1 nunca se tornaria falsa.

Fonte: FGV DPE-RS 2023 Técnico - Apoio Especializado (Programador) (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