O que significa RuntimeError: maximum recursion depth exceeded?
O erro RuntimeError: maximum recursion depth exceeded no Python acontece quando uma função recursiva ultrapassa o limite de chamadas permitido pelo interpretador, causando um estouro de pilha.
Exemplo do erro
def recursao_infinita(n):
print(n)
recursao_infinita(n + 1)
recursao_infinita(1)
Esse código gera uma chamada recursiva infinita, resultando no erro quando a profundidade máxima de recursão for atingida.
Como evitar esse erro
1. Usando uma condição de parada
A melhor forma de evitar esse erro é garantir que sua função recursiva tenha uma condição de parada:
def contagem_regressiva(n):
if n == 0:
print("Fim da recursão")
return
print(n)
contagem_regressiva(n - 1)
contagem_regressiva(5)
Neste exemplo, a função só chama a si mesma enquanto n
for maior que zero, evitando um loop infinito.
A importância de evitar loops recursivos infinitos
A recursão é um conceito poderoso em programação, mas seu uso excessivo pode levar a problemas de desempenho e erros como o RuntimeError
. Para evitar esse problema, é essencial implementar condições de parada eficientes e considerar abordagens iterativas quando necessário.
Algumas aplicações:
- Resolução de problemas matemáticos como fatorial e sequência de Fibonacci.
- Implementação de algoritmos de busca e ordenação.
- Construção de árvores e estruturas hierárquicas.
Dicas para quem está começando
- Sempre defina uma condição de parada ao usar recursão.
- Use
sys.setrecursionlimit(n)
com cuidado para evitar estouro de pilha. - Considere alternativas iterativas para resolver problemas recursivos.
Contribuições de Fernando Antunes