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.