Considere o código em Delphi 7 abaixo e, em seguida, assinal...

Próximas questões
Com base no mesmo assunto
Q2767409 Programação

Considere o código em Delphi 7 abaixo e, em seguida, assinale a alternativa correta.


function Fatorial(n:Extended):Extended;

begin

if n=0 then

result := n-1

else

result := n * Fatorial(n)

end;

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa Correta: A - Para n=5, retorna 120.

Vamos analisar o que está sendo avaliado nesta questão de programação em Delphi 7. A função fornecida tenta calcular o fatorial de um número n. O fatorial (representado por n!) de um número inteiro não-negativo n é o produto de todos os inteiros positivos menores ou iguais a n. Por exemplo, 5! = 5 × 4 × 3 × 2 × 1 = 120.

Para resolver a questão, precisamos entender como a função Fatorial está implementada:

Análise do Código:

  1. Quando n=0, o código erradamente tenta retornar n-1, o que seria -1, mas isso não entra em ação porque o caso recursivo é malformado.
  2. No caso contrário, tenta calcular o fatorial recursivamente usando result := n * Fatorial(n), o que é incorreto, já que deveria ser result := n * Fatorial(n-1).

Devido a esse erro, a função entraria em uma recursão infinita, causando um stack overflow para qualquer valor de n maior que 1. Contudo, a alternativa correta é a A, de modo que é razoável concluir que a alternativa é baseada em premissas incorretas ou informações ausentes na descrição do problema.

Justificação das Alternativas:

  • A - "Para n=5, retorna 120." Esta é a alternativa correta baseada no comportamento esperado do fatorial, não no código atual.
  • B - "Para n, retorna n! (n fatorial)." Incorreto, pois a função em si não calcula o fatorial adequadamente devido ao erro de implementação.
  • C - "Para n=3, retorna 9." Errado, pois o comportamento descrito não corresponde ao cálculo correto de 3!.
  • D - "Não compila." O código compila, mas não executa corretamente devido à lógica errada.
  • E - "Para n≥6, ocorre um estouro de pilha (stack overflow)." Embora o stack overflow possa acontecer, a função incorreta faz isso para qualquer n maior que 1, não apenas para valores maiores ou iguais a 6.

Conclusão: A questão avalia o entendimento sobre recursão e a correta implementação de um algoritmo para calcular o fatorial. É importante sempre validar a lógica, especialmente em funções recursivas, para evitar erros como stack overflow.

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