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
- Qual a saída do código Python a seguir: def recursao(n): if n == 0: return 1 else: return n * recursao(n - 1)…
- Analise o código a seguir: def fatorial(n): return 1 if n==0 else n * fatorial(n-1). Qual o resultado de fatorial(5)?
- Identifique a função recursiva correta para calcular o fatorial de um número n.
- A função recursiva abaixo calcula fatorial. Qual é a condição base? fatorial(n) = 1 se n = 0; fatorial(n) = n *…
- Identifique a função recursiva que calcula o fatorial de um número n. Qual é a saída de fatorial(5)?
- Qual das seguintes alternativas é um exemplo de recursão em uma função que calcula o fatorial de um número?
🔎 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
