Pular para o conteúdo

Serviço de Seleção do Pessoal da Marinha (SSPM) · Marinha do Brasil 2022

Questão 32 — Programação: Python — Recursão Mútua

Programação Python — Recursão Mútua

Serviço de Seleção do Pessoal da Marinha (SSPM) 2022

Marinha do Brasil · Quadro Técnico do Corpo Auxiliar da Marinha (CP-T) — Informática · Caderno Amarela

Gabarito disponível

Considere o código abaixo, escrito em linguagem Python.

def tico(X, X0, XF):
X0 += 200
if X * X0 < XF:
return teco(X, X0, XF)
return X0

def teco(X, X0, XF):
if X0 < X * XF:
XF //= 3
return tico(X, X0, XF)
return XF

X = teco(5, 1, 1000)
print(X)

O valor impresso em tela ao executá-lo é igual a:
Selecione uma alternativa

Resolução comentada

Rastreamento das chamadas mútuas teco/tico resulta em 201.

teco(5,1,1000): 1 < 5000, então XF = 1000//3 = 333 e chama tico(5,1,333). Em tico, X0 = 201 e 5*201 = 1005, que não é menor que 333, então retorna X0 = 201.

Análise das alternativas

A) 1, B) 111, D) 333 e E) 401 não correspondem ao fluxo de execução. O 333 é apenas o valor intermediário de XF, e 401 exigiria uma segunda chamada a tico, que não ocorre.

Referência: Python – funções, recursão mútua e divisão inteira (//).

Resolução comentada do VaiConcursos.

Ver gabarito

Gabarito: C

Fonte: Gabarito preliminar: Gabarito final (após recursos) — página 6