Funções recursivas


Funções recursivas são funções que chamam a si próprias durante a execução. Esse conceito é baseado no princípio da recursividade, que consiste em resolver um problema dividindo-o em subproblemas menores e, em seguida, resolver esses subproblemas.

Exemplo

function recursiva(max) {
  if (max >= 10) return;
 
  max++;
  console.log(max);
 
  recursiva(max);
}
 
recursiva(0);

No exemplo acima, a função recursiva é chamada inicialmente com o argumento 0. Dentro da função, há uma verificação (if (max >= 10) return;) para verificar se a condição de parada foi atingida. Caso contrário, a função incrementa max, imprime o valor e, em seguida, chama a si própria (recursiva(max)). Esse processo se repete até que a condição de parada seja satisfeita.

Cuidado com o limite de chamadas recursivas

É crucial definir uma forma de escapar do loop de recursividade para evitar o estouro do tamanho máximo da pilha de chamadas (Stack Overflow).

O exemplo anterior tem uma verificação simples para interromper a recursividade quando max atinge ou ultrapasse 10. Se essa condição não for adequadamente controlada, pode resultar em um erro, como exemplificado abaixo:

function recursiva(max) {
  // if (max >= 10) return;
 
  max++;
  console.log(max);
 
  recursiva(max);
}
 
recursiva(0);
 
// RangeError: Maximum call stack size exceeded

Neste caso, o código entra em um loop infinito, excedendo o tamanho máximo da pilha de chamadas (Maximum call stack size exceeded). Portanto, ao criar funções recursivas, é fundamental garantir que exista uma condição de parada para evitar erros e otimizar o desempenho do código.

Referências