Qual é o resultado da chamada recursiva da função abaixo para n = 3? python def fatorial(n): if n == 0: return…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Construir e simular algoritmos, de forma independente ou em colaboração, que resolvam problemas simples e do cotidiano com uso de sequências, seleções condicionais e repetições de instruções.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Qual é o resultado da chamada recursiva da função abaixo para n = 3? python def fatorial(n): if n == 0: return 1 else: return n * fatorial(n - 1)
- A) 3
- B) 6
- C) 9
- D) 0
- E) 1
✅ Resposta correta: alternativa B
Resolução passo a passo
- A função calcula o fatorial de n. Quando n é 0, retorna 1 (caso base). Caso contrário, retorna n multiplicado pelo resultado de fatorial(n - 1). Passo 2: Para n = 3, a chamada é fatorial(3), que retorna 3 * fatorial(2). Passo 3: fatorial(2) retorna 2 * fatorial(1), e fatorial(1) retorna 1 * fatorial(0). Passo 4: fatorial(0) retorna 1 pelo caso base. Passo 5: Desfazendo as chamadas de volta: fatorial(1) = 1 * 1 = 1; fatorial(2) = 2 * 1 = 2; fatorial(3) = 3 * 2 = 6. Passo 6: Portanto o resultado é 6, alternativa B, que coincide com o gabarito oficial. Por que as outras estão erradas: A) 3 é apenas o primeiro fator, sem multiplicar pelas chamadas seguintes; C) 9 seria 3 * 3, multiplicando n por ele mesmo em vez de usar n - 1; D) 0 não é o resultado de nenhuma multiplicação válida aqui, pois o caso base retorna 1 e não 0; E) 1 é apenas o valor do caso base, que não é multiplicado de volta pelos demais níveis da recursão.
💡 Dica: Analise a função e calcule o fatorial de 3.
Alternativa por alternativa
O aluno considera apenas a primeira chamada, retornando n sem completar as multiplicações das chamadas recursivas seguintes.
Por que engana: Confundir a funcao recursiva com uma funcao iterativa, nao aplicando corretamente a chamada recursiva e o caso base.
O fatorial de 3 é 3 * 2 * 1 = 6.
O aluno interpreta n * fatorial(n - 1) como n multiplicado por n, trocando o argumento decrescente da recursão por n novamente.
O aluno acredita que o caso base retorna 0, confundindo o elemento neutro da multiplicação com o zero absorvente.
O aluno pega apenas o valor do caso base (1) e esquece que cada nível da recursão multiplica o resultado das chamadas inferiores.
Raio-X da questão
função recursiva
avaliacao
conceito de recursao · operacoes multiplicativas
Revisar o conceito de recursão e como calcular fatoriais.
Confundir a funcao recursiva com uma funcao iterativa, nao aplicando corretamente a chamada recursiva e o caso base.
pensamento_critico
abstrato
Questões parecidas com resolução
- Crie e descreva um algoritmo, em linguagem simples ou pictográfica, que ajude uma criança a decidir se deve levar um…
- Crie um algoritmo em linguagem oral ou escrita que controle a rega de um vaso por 7 dias: diariamente verificar se…
- Projete em pseudocódigo um algoritmo que reconstrua uma mensagem a partir de pacotes recebidos onde cada pacote contém…
- Elabore em pseudocódigo um algoritmo que, dado um vetor de registros 'tarefas' (descricao, duracao_horas, prioridade) e…
- Elabore em pseudocódigo um algoritmo que, dado um array de registros 'alunos' com campos (nome, notas[4]…
- Projete um algoritmo e descreva as estruturas de dados para implementar operações de desfazer/refazer (undo/redo) em um…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
