O que acontece quando uma função recursiva não possui uma condição de parada?
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Construir soluções de problemas usando a técnica de recursão e automatizar tais soluções usando uma linguagem de programação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
O que acontece quando uma função recursiva não possui uma condição de parada?
- A) A função executa normalmente e retorna um valor.
- B) A função vai executar apenas uma vez.
- C) A função gera um erro de stack overflow.
- D) A função não tem efeito e termina imediatamente.
- E) A função retorna o valor padrão 0.
✅ Resposta correta: alternativa C
Resolução passo a passo
- Uma função recursiva é aquela que chama a si mesma. Para que essas chamadas terminem, ela precisa de um caso base, ou seja, uma condição de parada em que a função devolve um valor sem chamar a si mesma novamente.
- Sem condição de parada, cada chamada gera outra chamada, e essas chamadas se acumulam na pilha de execução (stack, ou pilha de chamadas), que guarda o contexto de cada chamada ainda não finalizada.
- Como a memória reservada para a pilha é limitada, a sucessão de chamadas eventualmente a esgota, e o programa encerra com um erro de estouro de pilha, o chamado stack overflow. Portanto, a alternativa C está correta.
- A alternativa A está errada, pois a função nunca chega a retornar um valor, já que nunca termina as chamadas.
- A alternativa B está errada, pois sem condição de parada a função executa repetidamente, e não apenas uma vez.
- A alternativa D está errada, pois a função não termina imediatamente; ela continua chamando a si mesma até falhar.
- A alternativa E está errada, pois não há retorno de valor padrão 0; o que ocorre é a falha de execução por falta de memória.
💡 Dica: Pense sobre o conceito de recursão e suas implicações.
Alternativa por alternativa
O aluno imagina que a recursão, por ser uma repetição de chamadas, sempre se resolve sozinha e devolve um resultado. Não percebe que sem caso base nunca há um retorno.
O aluno confunde a chamada recursiva com uma execução única, supondo que a função roda uma vez e para. Não percebe que a auto-chamada se repete indefinidamente.
Sem uma condição de parada, a função continuará chamando a si mesma até esgotar a pilha de chamadas.
O aluno acredita que a ausência de condição de parada faz a função simplesmente não produzir efeito e encerrar logo. Não entende que a função continua se chamando sem fim.
O aluno associa o fim da função a um valor padrão, como 0, imaginando que o programa devolve um valor default quando não há parada. Não sabe que a falha ocorre por esgotamento de memória.
Por que engana: Achar que a funcao recursiva sempre termina ou retorna valor padrao sem condicao de parada.
Raio-X da questão
função recursiva
diagnostico
conceito de funcao · recursao basica
Revisar as condições de parada em funções recursivas.
Achar que a funcao recursiva sempre termina ou retorna valor padrao sem condicao de parada.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Em uma função recursiva que busca o maior número em uma lista, o que acontece se não houver uma condição de parada?
- O que acontece quando um algoritmo utiliza um loop infinito?
- O que acontece se um algoritmo tiver uma condição de parada inadequada?
- Em uma função recursiva, qual é o elemento crucial para evitar um loop infinito?
- No contexto da programação, o que acontece quando uma condição em um loop nunca se torna falsa?
- O que acontece em um algoritmo quando a condição de repetição nunca se torna falsa?
Todas as questões de Programação - Programação com listas e recursão
🔎 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
