O que significa RuntimeError: maximum recursion depth exceeded?

O erro RuntimeError: maximum recursion depth exceeded ocorre quando uma função recursiva ultrapassa o limite permitido pelo Python, causando um estouro de pilha (stack overflow).

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 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

Compartilhe este tutorial: O que significa RuntimeError: maximum recursion depth exceeded

Compartilhe este tutorial

Continue aprendendo:

Como tratar ConnectionError ao fazer requisições HTTP com requests

O erro ConnectionError no Python ocorre quando uma tentativa de conexão a um servidor remoto falha, geralmente devido a problemas de rede ou indisponibilidade do servidor.

Tutorial anterior

Como resolver TimeoutError ao lidar com conexões externas

O erro TimeoutError ocorre quando uma operação, como uma requisição HTTP ou acesso a banco de dados, excede o tempo limite de resposta definido.

Próximo tutorial