aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/javascript/reference/errors/too_much_recursion
diff options
context:
space:
mode:
Diffstat (limited to 'files/pt-br/web/javascript/reference/errors/too_much_recursion')
-rw-r--r--files/pt-br/web/javascript/reference/errors/too_much_recursion/index.html66
1 files changed, 66 insertions, 0 deletions
diff --git a/files/pt-br/web/javascript/reference/errors/too_much_recursion/index.html b/files/pt-br/web/javascript/reference/errors/too_much_recursion/index.html
new file mode 100644
index 0000000000..26637da662
--- /dev/null
+++ b/files/pt-br/web/javascript/reference/errors/too_much_recursion/index.html
@@ -0,0 +1,66 @@
+---
+title: 'InternalError: too much recursion'
+slug: Web/JavaScript/Reference/Errors/Too_much_recursion
+translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion
+---
+<div>{{jsSidebar("Errors")}}</div>
+
+<h2 id="Mensagem">Mensagem</h2>
+
+<pre class="syntaxbox">Error: Out of stack space (Edge)
+InternalError: too much recursion (Firefox)
+RangeError: Maximum call stack size exceeded (Chrome)
+</pre>
+
+<h2 id="Tipo_de_erro">Tipo de erro</h2>
+
+<p>{{jsxref("InternalError")}}.</p>
+
+<h2 id="O_que_deu_errado">O que deu errado?</h2>
+
+<p>Uma função que invoca a si mesma é chamada <em>função recursiva</em>. Assim que uma condição é atendida, a função para de se invocar. </p>
+
+<p>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). <span class="seoSummary">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.</span></p>
+
+<h2 id="Exemplos">Exemplos</h2>
+
+<p>Esta função recursiva roda 10 vezes, como definido pela condição de saída.</p>
+
+<pre class="brush: js">function loop(x) {
+ if (x &gt;= 10) // "x &gt;= 10" é a condição de saída
+ return;
+
+ loop(x + 1); // o código recursivo em si
+}
+loop(0);</pre>
+
+<p>Mudar esta condição para um valor extremamente alto não vai funcionar:</p>
+
+<pre class="brush: js example-bad">function loop(x) {
+ if (x &gt;= 1000000000000)
+ return;
+
+ loop(x + 1);
+}
+loop(0);
+
+// InternalError: too much recursion</pre>
+
+<p>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).</p>
+
+<pre class="brush: js example-bad">function loop(x) {
+ // Não há condição de saída
+
+loop(x + 1); // Código recursivo
+}
+
+loop(0);
+
+// InternalError: too much recursion</pre>
+
+<h2 id="Veja_também">Veja também</h2>
+
+<ul>
+ <li>{{Glossary("Recursion")}}</li>
+ <li><a href="/en-US/docs/Web/JavaScript/Guide/Functions#Recursion">Funções recursivas</a></li>
+</ul>