Analise o seguinte algoritmo em pseudo-código e assinale a a...
Analise o seguinte algoritmo em pseudo-código e assinale a alternativa correta.
inteiro funcao_A (inteiro n)
início
inteiro f;
se ( n == 1) ou (n == 0) então
retorna 1;
f = funcao_A(n-1)*n;
retorna f;
fim.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa Correta: A
Vamos analisar a questão em detalhes. O pseudo-código apresentado implementa uma função recursiva que calcula o fatorial de um número inteiro n. A função é definida da seguinte forma:
inteiro funcao_A (inteiro n)
início
inteiro f;
se (n == 1) ou (n == 0) então
retorna 1;
f = funcao_A(n-1) * n;
retorna f;
fim.
Para compreender a lógica da função, é fundamental entender o conceito de recursão. Recursão ocorre quando uma função chama a si mesma para resolver um problema menor até alcançar uma condição base.
Justificativa da Alternativa Correta (A):
A alternativa A está correta porque descreve corretamente a operação da função recursiva. Quando a função funcao_A é chamada com o argumento 2, ela verifica se n é 1 ou 0, o que não é o caso. Então, ela faz uma chamada recursiva com o argumento n-1 (ou seja, 1), e multiplica o resultado dessa chamada pelo argumento atual (2).
Justificativa das Alternativas Incorretas:
B - A alternativa B está incorreta porque o algoritmo é recursivo, não iterativo. Em um algoritmo recursivo, não é necessário armazenar todos os passos intermediários do processamento em variáveis adicionais, pois a pilha de chamadas da recursão já gerencia essa informação.
C - A alternativa C está incorreta porque, quando a função é chamada com o argumento 1, ela retorna 1 e não 0. Esta é a condição base da recursão, que evita a necessidade de uma iteração adicional.
D - A alternativa D está incorreta. O algoritmo não retornará um erro para valores maiores que 1000, a menos que haja uma limitação do sistema em termos de profundidade de recursão ou limite de pilha. O pseudo-código não especifica tal limitação.
E - A alternativa E está incorreta porque o algoritmo não contém um laço (loop) que executa de 1 a n. Em vez disso, ele usa chamadas recursivas para multiplicar progressivamente cada número, conforme a definição de fatorial.
Em resumo, a alternativa A descreve corretamente a operação recursiva da função para calcular o fatorial de um número. Entender recursão e a condição base é essencial para resolver questões desse tipo.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
E) Há um laço que é executado de 1 a n ( Não executa e retornar 1), multiplicando progressivamente cada número pelo produto móvel dado por “f = funcao_A(n-1)*n;”.
Força Guerreiro!!!!!!
Função recursiva
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo