Dado o programa abaixo, com a variável raiz apontando para a...
![Imagem 006.jpg](https://arquivos.qconcursos.com/images/provas/30023/Imagem%20006.jpg)
![Imagem 005.jpg](https://arquivos.qconcursos.com/images/provas/30023/Imagem%20005.jpg)
![Imagem 007.jpg](https://arquivos.qconcursos.com/images/provas/30023/Imagem%20007.jpg)
Levando em conta que:
1) - Subentende-se que o valor de Z1 é 1, Z2 é 2 e assim por diante.
2) - O que está entre parênteses é a sequencia da informação no algoritmo.
Montei o seguinte teste de mesa:
Parâmetro | altE | altD | Retorno
1 (1) | 2 (14) | 3 (31) | 4 (32)
2 (2) | 1 (7) | 1 (12) | 2 (13)
4 (3) | 0 (4) | 0 (5) | 1 (6)
5 (8) | 0 (9) | 0 (10) | 1 (11)
3 (15) | 2 (24) | 1 (29) | 3 (30)
6 (16) | 1 (21) | 0 (22) | 2 (23)
8 (17) | 0 (18) | 0 (19) | 1 (20)
7 (25) | 0 (26) | 0 (27) | 1 (28)
Após executar de forma recursiva a função XY, tem-se:
RET -> (XY(raiz) - 1)
RET -> (4 - 1)
RET -> 3 (letra b).
Passível de anulação. Ao fim do código, à variável RET é atribuída a função XY. Ou seja, é atribuído o RETORNO da função XY. Acontece que a função XY não retorna nada. Apesar de ela dizer (em sua assinatura) que será retornado um inteiro, isto não é feito, não há "retorne XY" ou "return XY".
Força Guerreiro!!!!!!