Questão nº 37

Questão de Tecnologia da Informação · FGV CVM 2024 (nº 37)

FGV2024Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8)Tecnologia da Informação
Gabarito: Cver comentário ↓

Ao implementar algumas funcionalidades em sua página pessoal, Lucas fez um teste, com base no código Java Script apresentado a seguir, em um trecho do HTML.

<script>
 const f = function(...v){
     a = v.length>0?v.length*v[0]:0;
     v.splice(0,1);
     return a==0?a:a+f(...v);
 }
 console.log(f(...[1,2,3,...[0,1],3,2]));
</script>

Quando Lucas abriu a página, o valor impresso no console foi:

Resposta comentada

Gabarito Alternativa C

A função JavaScript utiliza recursão, onde uma função chama a si mesma, para calcular um valor, processando um array e modificando-o a cada passo, com uma condição de parada crucial.

Chamada inicial: f(...[1,2,3,...[0,1],3,2]) expande o array para [1,2,3,0,1,3,2].

Passo a passo da execução:

  1. f([1,2,3,0,1,3,2]): v.length=7, v[0]=1. a = 7*1 = 7. v se torna [2,3,0,1,3,2]. Retorna 7 + f([2,3,0,1,3,2]).
  2. f([2,3,0,1,3,2]): v.length=6, v[0]=2. a = 6*2 = 12. v se torna [3,0,1,3,2]. Retorna 12 + f([3,0,1,3,2]).
  3. f([3,0,1,3,2]): v.length=5, v[0]=3. a = 5*3 = 15. v se torna [0,1,3,2]. Retorna 15 + f([0,1,3,2]).
  4. f([0,1,3,2]): v.length=4, v[0]=0. a = 4*0 = 0. v se torna [1,3,2]. Como a é 0, a condição a==0?a:... faz a função retornar 0 imediatamente, encerrando a recursão neste ramo.

Somando os retornos:

  • A Chamada 4 retorna 0.
  • A Chamada 3 retorna 15 + 0 = 15.
  • A Chamada 2 retorna 12 + 15 = 27.
  • A Chamada 1 retorna 7 + 27 = 34.

O valor final impresso é 34.

(A) Incorreta: O valor 6 não é obtido por esta lógica de cálculo.
(B) Incorreta: O valor 12 é apenas um dos resultados intermediários da soma, não o final.
(C) Correta: O cálculo passo a passo demonstra que o valor final retornado pela função é 34, devido à condição de parada da recursão quando a se torna 0.
(D) Incorreta: O valor 36 não é obtido seguindo a lógica da função.
(E) Incorreta: Esta é a armadilha da banca. O valor 45 seria obtido se a condição a==0?a: fosse ignorada quando v[0] é 0, fazendo a recursão continuar mesmo quando o produto v.length * v[0] resulta em zero, e só parasse quando o array v estivesse completamente vazio. No entanto, a função retorna 0 assim que a (o produto) se torna 0, independentemente de o array estar vazio ou não.

Fonte: FGV CVM 2024 Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8) (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