função calc(n) se (n == 0 ou n == 1) returne 1 senão returne n * calc(n - 1) fim se fim função n = 3 resposta = calc(n) Tendo como referência o pseudocódigo precedente, assinale a opção correta.
- A)No código, não há passagem de parâmetro.
Errada, porque há passagem de parâmetro sim: a função calc recebe n como argumento na chamada calc(n).
- B)A linha resposta = calc(n) contém comando de decisão.
Errada, porque resposta = calc(n) é uma atribuição com chamada de função, e não um comando de decisão.
- C)Após executado o código, a variável resposta receberá o valor 6.
Certa, pois calc(3) calcula 3 * 2 * 1, resultando em 6.
- D)O código é exemplo de hashing.
Errada, porque o código trata de recursão e cálculo de fatorial, não de hashing.
- E)Em n = 3, n é uma constante do tipo estruturada.
Errada, porque n é uma variável numérica simples, não uma constante nem um tipo estruturado.
Gabarito: C
Esse pseudocódigo mostra uma função recursiva: ela chama a si mesma até chegar a um caso base. Aqui, o caso base é quando n vale 0 ou 1, momento em que a função retorna 1 sem continuar chamando novamente. Isso é exatamente o que faz a conta “andar para trás” até parar no ponto certo. Quando n recebe o valor 3, a chamada fica assim: calc(3) = 3 * calc(2), calc(2) = 2 * calc(1) e calc(1) retorna 1. Juntando tudo, temos 3 * 2 * 1 = 6. Ou seja, a variável resposta recebe 6 ao final. Perceba que isso é o cálculo do fatorial, só que escrito em forma de recursão. Em programação, é muito comum usar recursão para problemas que se repetem com subproblemas menores, desde que exista um caso base para impedir a chamada infinita. Então o gabarito está correto porque o programa executa as chamadas recursivas até chegar ao caso base e, para n = 3, o resultado final armazenado em resposta é 6.