Questão de Programação — R — FGV 2023
- Código
- fg070755
- Banca
- FGV
- Órgão
- SMPOG de Belo Horizonte - MG
- Ano
- 2023
- Nível
- Superior
- Cargo
- Analista de Planejamento e Gestão Governamental: Ciência da Computação
- A1 4 9
- B1 4 9 16
- C9 4 1
- D16 9 4 1
GabaritoB — 1 4 9 16
Gabarito: letra B. A função xpto é recursiva e imprime os valores da soma na ordem inversa das chamadas (UEPS). Após chamadas sucessivas, os valores impressos são: 1, 4, 9, 16.
A banca testa o entendimento de recursão e da pilha de execução. Em R, quando uma função recursiva print o resultado após a chamada recursiva, a saída ocorre do caso base para o topo – ou seja, o primeiro valor impresso é o resultado da chamada mais profunda.
xpto(7) → k=7 > 0: a = 7 + xpto(5) (aguarda retorno)
xpto(5) → k=5 > 0: a = 5 + xpto(3)
xpto(3) → k=3 > 0: a = 3 + xpto(1)
xpto(1) → k=1 > 0: a = 1 + xpto(-1)
xpto(-1) → k=-1 <= 0: retorna 0 (sem print)
Agora os retornos desempilham:
Em xpto(1): a = 1 + 0 = 1 → print(1)
Em xpto(3): a = 3 + 1 = 4 → print(4)
Em xpto(5): a = 5 + 4 = 9 → print(9)
Em xpto(7): a = 7 + 9 = 16 → print(16)
Lista apenas 1, 4, 9 – falta o 16. O erro é interromper a sequência antes da última chamada.
Exibe os quatro valores na ordem correta: 1, 4, 9, 16.
Apresenta ordem invertida (9, 4, 1) e incompleta (falta 16). Confunde a ordem de desempilhamento.
Mostra ordem reversa completa (16, 9, 4, 1). Embora todos os números apareçam, a ordem está errada – o primeiro a ser impresso é 1, não 16.
Em recursão com print após a chamada, a saída segue a ordem do caso base para a chamada original (LIFO – Last In, First Out). Simule com papel ou use browser() para depurar.
Gabarito: letra B.
Link permanente: /questoes/fg070755