programa { funcao proc(inteiro n) { se (n==4) { retorna n; } senão { retorna 2*proc(n+1); } } escreva (proc(2)); Assinale a opção que apresenta o resultado da execução do pseudo-código precedente.
- A)2
Errada, porque o valor final sofre multiplicacoes sucessivas ao retornar da recursao, e nao termina em 2.
- B)4
Errada, porque o caso base nao produz 2 e cada chamada anterior dobra o resultado.
- C)6
Errada, porque nao ha soma ou acumulacao de 6 em nenhum momento do fluxo recursivo.
- D)8
Errada, porque 8 e apenas o valor intermediario de proc(3), nao o resultado final de proc(2).
- E)16
Certa, porque proc(4) retorna 4, proc(3) retorna 8 e proc(2) retorna 16.
Gabarito: E
Este pseudo-codigo trabalha com recursao, isto e, a funcao chama a si mesma ate atingir um caso de parada. Aqui, o caso base ocorre quando n == 4: nesse ponto, a funcao simplesmente retorna n, ou seja, 4. Antes disso, ela sempre retorna 2 vezes o resultado da chamada com n + 1, entao cada passo vai “multiplicando” o valor por 2 ao voltar da recursao.