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
Respostas
respondido por:
104
b. 6 , pois b = 3, logo b > 1 .
(A + B - 2) + A, subistituindo (2 + 3 - 1) + 2.
Logo 6.
(A + B - 2) + A, subistituindo (2 + 3 - 1) + 2.
Logo 6.
respondido por:
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 similares
6 anos atrás
8 anos atrás
9 anos atrás