Alternativa D - O snippet imprimirá o valor 0.
Análise do Código
Este exercício testa o entendimento sobre recursividade em Python. A função fun(x, y) chama a si mesma enquanto a condição inicial não for atendida.
Passo a Passo da Execução
Vamos simular a chamada print(fun(0, 3)):
- Primeira Chamada:
fun(0, 3)
- Verifica-se se $x == y$ ($0 == 3$). É Falso.
- Entra no
else e chama fun(0, 3-1) $\rightarrow$ fun(0, 2).
- Segunda Chamada:
fun(0, 2)
- Verifica-se se $x == y$ ($0 == 2$). É Falso.
- Entra no
else e chama fun(0, 2-1) $\rightarrow$ fun(0, 1).
- Terceira Chamada:
fun(0, 1)
- Verifica-se se $x == y$ ($0 == 1$). É Falso.
- Entra no
else e chama fun(0, 1-1) $\rightarrow$ fun(0, 0).
- Quarta Chamada (Caso Base):
fun(0, 0)
- Verifica-se se $x == y$ ($0 == 0$). É Verdadeiro.
- A função retorna o valor de $x$, que é 0.
Conclusão
O valor retornado propaga-se de volta por todas as chamadas anteriores até chegar ao comando print. Como o valor final retornado é 0, a saída será 0.
| Estado | x | y | Ação |
|---|
| Início | 0 | 3 | Recursão (y-1) |
| Passo 1 | 0 | 2 | Recursão (y-1) |
| Passo 2 | 0 | 1 | Recursão (y-1) |
| Passo 3 | 0 | 0 | Retorna 0 |
Portanto, a alternativa correta é a que indica o valor 0.