Informática, perguntado por silvasoares845, 1 ano atrás

Qual é o valor retornado pela chamada MISTERIO(2,3) da seguinte função recursiva?

function MISTERIO(int A,int B)

{

if (B == 1)

return A;

else if (B > 1)

return MISTERIO(A,B-1) + A;

else

return MISTERIO(A,B+1) – A;

}

a.
8

b.
6

c.
4

d.
3

e.
1

Soluções para a tarefa

Respondido por paperboardbox
104
b. 6 , pois b = 3, logo b > 1 .

(A + B - 2) + A, subistituindo (2 + 3 - 1) + 2.
Logo 6.
Respondido por anralexandrep5jgsv
25

Resposta:

B-6

Explicação:

Aplicando o algoritmo temos que executar a função 3 vezes e verificar o retorno destas até obter o resultado final.

MISTERIO(2,3) = 6

 MISTERIO(2,2)+2 = (4)+2

   MISTERIO(2,1)+2 = (2)+2 = 4

1) B é > 1 então tem que executar a função de novo com os parâmetros A e B-1 [ MISTERIO(2,2) ] e depois somar o retorno desta função com 2

2) Executando a função novamente B > 1 novamente então tem que executar a função novamente com os parâmetros A e B-1 [ MISTERIO(2,1) ], pegar o valor resultante e depois somar  2

3) executando a função novamente B é igual a 1 então a função retorna o valor do parâmetro A que é 2 e soma com 2 resultando 4

Depois disso é só voltar com o retorno das funções e obter o valor

Perguntas interessantes