Considere o seguinte algoritmo que calcula o fatorial de um ...
Considere o seguinte algoritmo que calcula o fatorial de um número n (fatorial de n igual a 1 x 2 x 3 x ... x n), escrito em pseudocódigo:
I := 0; F := 1;
WHILE I < n DO
I := I + 1; F := I * F;
END
Selecione a opção que indica um algoritmo recursivo, escrito
em pseudocódigo, que também calcula o fatorial de um número.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a Alternativa B. Vamos entender o porquê.
O tema da questão é algoritmos para cálculo de fatorial, com foco em uma implementação recursiva. Em programação, a recursividade é uma técnica onde uma função chama a si mesma para resolver subproblemas de um problema maior. Para calcular o fatorial de um número de forma recursiva, precisamos entender que o fatorial de n (n!) é definido como n * (n-1)!, e o fatorial de 0 é 1.
A Alternativa B apresenta o pseudocódigo corretamente: a função chama a si mesma de forma que, se o número é maior que 0, ela retorna I * F(I - 1). Este é um padrão clássico e correto de um algoritmo recursivo para calcular o fatorial. Quando I é igual a 0, a função retorna 1, que é a condição de parada ou caso base da recursão.
Agora, vejamos as alternativas incorretas:
Alternativa A: Esta opção tenta usar recursão, mas chama a função F passando o valor 1, o que não diminui o problema em direção ao caso base. Isso resultaria em ciclos infinitos para valores de entrada maiores que 0.
Alternativa C: Aqui, a recursão é feita sem multiplicar pelo valor atual de I. O retorno é apenas F(I - 1), o que incorretamente calcula o fatorial como sempre retornando o valor 1, mesmo que I seja maior que 0.
Alternativa D: Esta opção utiliza recursão, mas de forma incorreta, pois incrementa I ao invés de decrementá-lo, o que faz com que a função nunca chegue ao caso base (I igual a 0), resultando em loop infinito.
Alternativa E: Esta alternativa tenta chamar a função F com o mesmo valor de I, o que significa que a recursão não avança em direção ao caso base, levando novamente a ciclos infinitos para valores de entrada maiores que 0.
Espero que esta explicação tenha ajudado a esclarecer como os algoritmos recursivos funcionam para calcular o fatorial. Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo