Error: Out of stack space (Edge) InternalError: too much recursion (Firefox) RangeError: Maximum call stack size exceeded (Chrome)Tipo de erro O que deu errado?
Uma função que invoca a si mesma é chamada função recursiva. Assim que uma condição é atendida, a função para de se invocar.
De certa forma, recursão é análoga a um loop. Ambos executam o mesmo código múltiplas vezes, e ambos exigem uma condição (para evitar um loop infinito ou, nesse caso, uma recursão infinita). Quando são feitas excessivas invocações, ou a função não possui uma condição para interromper a recursividade, este erro é lançado.
ExemplosEsta função recursiva roda 10 vezes, como definido pela condição de saÃda.
function loop(x) {
if (x >= 10) {
// "x >= 10" é a condição de saÃda
return;
}
loop(x + 1); // o código recursivo em si
}
loop(0);
Mudar esta condição para um valor extremamente alto não vai funcionar:
function loop(x) {
if (x >= 1000000000000) return;
loop(x + 1);
}
loop(0);
// InternalError: too much recursion
A seguinte função recursiva não possui condição de saÃda. Assim, ela vai continuar se invocando indefinidamente (até que o erro seja lançado e a execução interrom).
function loop(x) {
// Não há condição de saÃda
loop(x + 1); // Código recursivo
}
loop(0);
// InternalError: too much recursion
Veja também
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4