← Questões de Programação

Programação · CESPE/CEBRASPE · 2023

Questão comentada de Programação

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.

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.

Continue treinando

Questões relacionadas