diff options
Diffstat (limited to 'files/fr/web/javascript/reference/errors/too_much_recursion')
| -rw-r--r-- | files/fr/web/javascript/reference/errors/too_much_recursion/index.html | 70 | ||||
| -rw-r--r-- | files/fr/web/javascript/reference/errors/too_much_recursion/index.md | 72 |
2 files changed, 72 insertions, 70 deletions
diff --git a/files/fr/web/javascript/reference/errors/too_much_recursion/index.html b/files/fr/web/javascript/reference/errors/too_much_recursion/index.html deleted file mode 100644 index 097eff25b7..0000000000 --- a/files/fr/web/javascript/reference/errors/too_much_recursion/index.html +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: 'InternalError: too much recursion' -slug: Web/JavaScript/Reference/Errors/Too_much_recursion -tags: - - Erreurs - - InternalError - - JavaScript - - Reference -translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion -original_slug: Web/JavaScript/Reference/Erreurs/Too_much_recursion ---- -<div>{{jsSidebar("Errors")}}</div> - -<h2 id="Message">Message</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="Type_d'erreur">Type d'erreur</h2> - -<p>{{jsxref("InternalError")}}.</p> - -<h2 id="Quel_est_le_problème">Quel est le problème ?</h2> - -<p>Une fonction qui s'appelle elle-même est une fonction <em>recursive</em>. Lorsqu'une certaine condition est respectée, la fonction arrête de s'appeler elle-même, c'est ce qu'on appelle le cas initial.</p> - -<p>D'une certaine façon, une récursion est semblable à une boucle. Les deux exécutent le même code plusieurs fois, et les deux ont besoin d'une condition d'arrêt afin d'éviter une boucle infinie ou une récursion infinie. Lorsqu'il y a trop de niveaux de récursion ou une récursion infinie, JavaScript lèvera cette erreur.</p> - -<h2 id="Exemples">Exemples</h2> - -<p>Cette fonction récursive est exécutée 10 fois comme l'indique la condition de sortie :</p> - -<pre class="brush: js">function loop(x) { - if (x >= 10) // "x >= 10" is the exit condition - return; - // do stuff - loop(x + 1); // the recursive call -} -loop(0);</pre> - -<p>Si la condition d'arrêt est beaucoup trop grande, cela ne fonctionnera pas :</p> - -<pre class="brush: js example-bad">function loop(x) { - if (x >= 1000000000000) - return; - // do stuff - loop(x + 1); -} -loop(0); - -// InternalError: too much recursion</pre> - -<p>Si la fonction récursive ne possède pas de cas initial, il n'y aura pas de condition de sortie et la fonction continuera de s'appeler indéfiniment.</p> - -<pre class="brush: js example-bad">function boucle(x) { - boucle(x + 1); - // il n'y a pas de cas initial -} - -boucle(0); -</pre> - -<h2 id="Voir_aussi">Voir aussi</h2> - -<ul> - <li>{{Glossary("Récursion")}}</li> - <li><a href="/fr/docs/Web/JavaScript/Guide/Fonctions#La_récursivité">Les fonctions récursives</a></li> -</ul> diff --git a/files/fr/web/javascript/reference/errors/too_much_recursion/index.md b/files/fr/web/javascript/reference/errors/too_much_recursion/index.md new file mode 100644 index 0000000000..62e269f74a --- /dev/null +++ b/files/fr/web/javascript/reference/errors/too_much_recursion/index.md @@ -0,0 +1,72 @@ +--- +title: 'InternalError: too much recursion' +slug: Web/JavaScript/Reference/Errors/Too_much_recursion +tags: + - Erreurs + - InternalError + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Errors/Too_much_recursion +original_slug: Web/JavaScript/Reference/Erreurs/Too_much_recursion +--- +{{jsSidebar("Errors")}} + +## Message + + Error: Out of stack space (Edge) + InternalError: too much recursion (Firefox) + RangeError: Maximum call stack size exceeded (Chrome) + +## Type d'erreur + +{{jsxref("InternalError")}}. + +## Quel est le problème ? + +Une fonction qui s'appelle elle-même est une fonction _recursive_. Lorsqu'une certaine condition est respectée, la fonction arrête de s'appeler elle-même, c'est ce qu'on appelle le cas initial. + +D'une certaine façon, une récursion est semblable à une boucle. Les deux exécutent le même code plusieurs fois, et les deux ont besoin d'une condition d'arrêt afin d'éviter une boucle infinie ou une récursion infinie. Lorsqu'il y a trop de niveaux de récursion ou une récursion infinie, JavaScript lèvera cette erreur. + +## Exemples + +Cette fonction récursive est exécutée 10 fois comme l'indique la condition de sortie : + +```js +function loop(x) { + if (x >= 10) // "x >= 10" is the exit condition + return; + // do stuff + loop(x + 1); // the recursive call +} +loop(0); +``` + +Si la condition d'arrêt est beaucoup trop grande, cela ne fonctionnera pas : + +```js example-bad +function loop(x) { + if (x >= 1000000000000) + return; + // do stuff + loop(x + 1); +} +loop(0); + +// InternalError: too much recursion +``` + +Si la fonction récursive ne possède pas de cas initial, il n'y aura pas de condition de sortie et la fonction continuera de s'appeler indéfiniment. + +```js example-bad +function boucle(x) { + boucle(x + 1); + // il n'y a pas de cas initial +} + +boucle(0); +``` + +## Voir aussi + +- {{Glossary("Récursion")}} +- [Les fonctions récursives](/fr/docs/Web/JavaScript/Guide/Fonctions#La_récursivité) |
