Table des matières
Qu'est-ce que la récursivité ?
Grammaire
Exemple 1 (Utilisez une boucle for pour trouver la somme de 1 à n nombres)
Exemple 2 (Trouver la somme de 1 à n nombres à l'aide d'une fonction récursive)
Exemple 3 (Méthode itérative pour fusionner toutes les chaînes d'un tableau)
Exemple 4 (méthode récursive de fusion de toutes les chaînes d'un tableau)
Quelle méthode l'utilisateur doit-il utiliser, itérative ou récursive ?
Maison interface Web js tutoriel Comment comprendre la récursivité en JavaScript ?

Comment comprendre la récursivité en JavaScript ?

Aug 29, 2023 pm 07:25 PM

如何理解 JavaScript 中的递归?

Qu'est-ce que la récursivité ?

Le mot récursivité vient de récurrent, ce qui signifie revenir encore et encore dans le passé. Une fonction récursive est une fonction qui s'appelle encore et encore en modifiant l'entrée étape par étape. Ici, modifier l'entrée d'un niveau signifie diminuer ou augmenter l'entrée d'un niveau.

Chaque fois qu'une fonction récursive atteint une condition de base, elle arrête sa propre exécution. Comprenons quelles sont les conditions de base à travers un exemple. Par exemple, nous devons trouver la factorielle d’un nombre. Nous appelons la fonction factorielle en décrémentant l'entrée de 1 et devons nous arrêter chaque fois que l'entrée atteint 1. Par conséquent, ici 1 sert de condition de base.

Grammaire

Les utilisateurs peuvent utiliser la syntaxe suivante pour comprendre la récursivité en JavaScript.

function recur(val) {
   if (base condition) {
      return;
   }
   
   // perform some action
   
   // decrease the value of val by one step
   return recur(newVal);
}
Copier après la connexion

Dans la syntaxe ci-dessus, les utilisateurs peuvent observer que lorsque la condition de base devient vraie, nous renvoyons null pour arrêter l'exécution de la fonction. Si la condition de base est fausse, nous effectuons une action avec la valeur d'entrée et appelons à nouveau la fonction recur() avec la nouvelle valeur du paramètre.

Maintenant, regardons divers exemples de récursivité. Ici, nous allons apprendre à d'abord implémenter un algorithme itératif à l'aide d'une boucle for, puis à le convertir en méthode récursive.

Exemple 1 (Utilisez une boucle for pour trouver la somme de 1 à n nombres)

Dans l'exemple ci-dessous, nous avons écrit la fonction sumOfN() pour obtenir la somme de 1 à N nombres. Nous effectuons N itérations en utilisant une boucle for et à chaque itération nous ajoutons la valeur de I à la variable somme.

Renvoie enfin la valeur de la variable somme.

<html>
<body>
   <h3>Using the <i> iterative approach </i> to find sum of n numbers in JavaScript</h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      
      // function to find the sum of n numbers using an iterative approach
      function sumOfN(n) {
         let sum = 0;
         for (let i = n; i >= 1; i--) {
            sum += i;
         }
         return sum;
      }
      content.innerHTML += "The sum of 1 to 10 numbers is " + sumOfN(10) + "<br>";
      content.innerHTML += "The sum of 1 to 20 numbers is " + sumOfN(20) + "<br>";
   </script>
</body>
</html>
Copier après la connexion

Dans l'exemple ci-dessus, nous avons utilisé la méthode itérative pour trouver la somme de N nombres. Nous allons maintenant utiliser la méthode récursive pour faire la même chose.

Exemple 2 (Trouver la somme de 1 à n nombres à l'aide d'une fonction récursive)

La fonction

sumOfN() est la fonction récursive dans l'exemple ci-dessous. Nous appelons à plusieurs reprises la fonction sumOfN() en décrémentant la valeur de l'argument de 1. sumOfN(N1) renvoie la somme de N-1 nombres, on y ajoute N pour obtenir la somme de N nombres. Chaque fois que la valeur de N devient 1, il renvoie 1 comme condition de base pour arrêter l'exécution de la fonction.

<html>
<body>
   <h3>Using the <i> recursive approach </i> to find sum of n numbers in JavaScript</h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      
      // function to find the sum of n numbers using a recursive approach
      function sumOfN(n) {
         
         // base condition
         if (n == 1) {
            return 1;
         }
         
         // call function recursively by decreasing the value of n by 1.
         return n + sumOfN(n - 1);
      }
      content.innerHTML += "The sum of 1 to 10 numbers is " + sumOfN(10) + "<br>";
      content.innerHTML += "The sum of 1 to 20 numbers is " + sumOfN(20) + "<br>";
   </script>
</body>
</html>
Copier après la connexion

Comprenons comment fonctionne la fonction récursive ci-dessus. Ci-dessous, les utilisateurs peuvent découvrir étape par étape comment les appels de fonction récursifs se produisent.

sumOfN(5);
return 5 + sumOfN(4);
   return 4 + sumOfN(3);
      return 3 + sumOfN(2);
         return 2 + sumOfN(1);
            return 1;
         return 2 + 1;
      return 3 + 3;
   return 4 + 6; 
Copier après la connexion

Exemple 3 (Méthode itérative pour fusionner toutes les chaînes d'un tableau)

Dans l'exemple ci-dessous, nous avons créé un tableau de chaînes. Nous avons créé la fonction mergeString() pour fusionner toutes les chaînes du tableau en une seule chaîne. Nous utilisons une boucle for pour parcourir le tableau et fusionner toutes les chaînes dans la variable "str" ​​​​une par une.

<html>
<body>
   <h3>Using the <i> iterative approach </i> to merge all strings of the array in JavaScript</h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      
      // function to merge all strings of the array using for loop
      function mergeString(arr) {
         let str = '';
         for (let i = 0; i < arr.length; i++) {
            str += arr[i];
         }
         return str;
      }
      let arr = ['I', ' ', 'am', ' ', 'a', ' ', 'programmer'];
      content.innerHTML += "The original array is: " + arr + "<br>";
      content.innerHTML += "After merging all strings of the array into the single string is " + mergeString(arr) + "<br>";
   </script>
</body>
</html>
Copier après la connexion

Exemple 4 (méthode récursive de fusion de toutes les chaînes d'un tableau)

Dans l'exemple ci-dessous, nous avons converti la fonction mergeString() en fonction récursive. Nous prenons le premier élément du tableau et le fusionnons avec le résultat de retour de la fonction mergeString(). La fonction mergeString() renvoie les n-1 derniers éléments du tableau après la fusion. De plus, nous utilisons la méthode slice() pour supprimer le premier élément du tableau.

Lorsqu'il ne reste qu'un seul élément dans le tableau, il renvoie le même élément que la condition de base.

<html>
<body>
   <h3>Using the <i> Recursive approach </i> to merge all strings of the array in JavaScript</h3>
   <div id = "content"> </div>
   <script>
      let content = document.getElementById('content');
      
      // function to merge all strings of the array using recursion
      function mergeString(arr) {
         
         // based condition
         if (arr.length == 1) {
            return arr[0];
         }

         // remove the first element from the array using the slice() method.
         return arr[0] + " " + mergeString(arr.slice(1));
      }
      let arr = ["I", "am", "a", "web", "developer"];
      content.innerHTML += "The original array is: " + arr + "<br>";
      content.innerHTML += "After merging all strings of the array into the single string is " + mergeString(arr) + "<br>";
   </script>
</body>
</html>
Copier après la connexion

Quelle méthode l'utilisateur doit-il utiliser, itérative ou récursive ?

La question principale est de savoir quelle méthode est la meilleure, itérative ou récursive, et quelle méthode l'utilisateur doit-il utiliser.

Dans certains cas, les méthodes itératives sont plus rapides que les méthodes récursives. De plus, la récursivité nécessite plus de mémoire lors de l'itération. Pour certains algorithmes comme diviser pour régner, la récursivité est plus utile car nous devons écrire moins de code en utilisant des méthodes récursives. De plus, les utilisateurs peuvent être confrontés à des problèmes de fuite de mémoire si les conditions de base ne sont pas déclenchées dans les méthodes récursives.

Si nous pouvons diviser le code en parties plus petites, nous devons utiliser des méthodes récursives, et pour améliorer les performances du code, nous devons utiliser des méthodes itératives.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Remplacer les caractères de chaîne en javascript Remplacer les caractères de chaîne en javascript Mar 11, 2025 am 12:07 AM

Explication détaillée de la méthode de remplacement de la chaîne JavaScript et de la FAQ Cet article explorera deux façons de remplacer les caractères de chaîne dans JavaScript: le code JavaScript interne et le HTML interne pour les pages Web. Remplacer la chaîne dans le code JavaScript Le moyen le plus direct consiste à utiliser la méthode Remplace (): str = str.replace ("trouver", "remplacer"); Cette méthode remplace uniquement la première correspondance. Pour remplacer toutes les correspondances, utilisez une expression régulière et ajoutez le drapeau global G: str = str.replace (/ fi

Tutoriel de configuration de l'API de recherche Google personnalisé Tutoriel de configuration de l'API de recherche Google personnalisé Mar 04, 2025 am 01:06 AM

Ce tutoriel vous montre comment intégrer une API de recherche Google personnalisée dans votre blog ou site Web, offrant une expérience de recherche plus raffinée que les fonctions de recherche de thème WordPress standard. C'est étonnamment facile! Vous pourrez restreindre les recherches à Y

Exemple Couleurs Fichier JSON Exemple Couleurs Fichier JSON Mar 03, 2025 am 12:35 AM

Cette série d'articles a été réécrite à la mi-2017 avec des informations à jour et de nouveaux exemples. Dans cet exemple JSON, nous examinerons comment nous pouvons stocker des valeurs simples dans un fichier à l'aide du format JSON. En utilisant la notation de paire de valeurs clés, nous pouvons stocker n'importe quel type

Créez vos propres applications Web Ajax Créez vos propres applications Web Ajax Mar 09, 2025 am 12:11 AM

Vous voici donc, prêt à tout savoir sur cette chose appelée Ajax. Mais qu'est-ce que c'est exactement? Le terme Ajax fait référence à un regroupement lâche de technologies utilisées pour créer un contenu Web interactif dynamique. Le terme Ajax, inventé à l'origine par Jesse J

8 Superbes plugins de mise en page JQuery Page 8 Superbes plugins de mise en page JQuery Page Mar 06, 2025 am 12:48 AM

Tirez parti de jQuery pour les dispositions de page Web sans effort: 8 plugins essentiels JQuery simplifie considérablement la mise en page de la page Web. Cet article met en évidence huit puissants plugins jQuery qui rationalisent le processus, particulièrement utile pour la création de sites Web manuels

Qu'est-ce que & # x27; ceci & # x27; en javascript? Qu'est-ce que & # x27; ceci & # x27; en javascript? Mar 04, 2025 am 01:15 AM

Points de base Ceci dans JavaScript fait généralement référence à un objet qui "possède" la méthode, mais cela dépend de la façon dont la fonction est appelée. Lorsqu'il n'y a pas d'objet actuel, cela fait référence à l'objet global. Dans un navigateur Web, il est représenté par Window. Lorsque vous appelez une fonction, cela maintient l'objet global; mais lors de l'appel d'un constructeur d'objets ou de l'une de ses méthodes, cela fait référence à une instance de l'objet. Vous pouvez modifier le contexte de ceci en utilisant des méthodes telles que Call (), Appliquer () et Bind (). Ces méthodes appellent la fonction en utilisant la valeur et les paramètres donnés. JavaScript est un excellent langage de programmation. Il y a quelques années, cette phrase était

Améliorez vos connaissances jQuery avec le spectateur source Améliorez vos connaissances jQuery avec le spectateur source Mar 05, 2025 am 12:54 AM

JQuery est un excellent cadre JavaScript. Cependant, comme pour n'importe quelle bibliothèque, il est parfois nécessaire de passer sous le capot pour découvrir ce qui se passe. C'est peut-être parce que vous tracez un bug ou que vous êtes simplement curieux de savoir comment jQuery réalise une interface utilisateur particulière

10 feuilles de triche mobiles pour le développement mobile 10 feuilles de triche mobiles pour le développement mobile Mar 05, 2025 am 12:43 AM

Ce message compile des feuilles de triche utiles, des guides de référence, des recettes rapides et des extraits de code pour le développement d'Android, BlackBerry et Iphone. Aucun développeur ne devrait être sans eux! Guide de référence sur les gestes touchés (PDF) Une ressource précieuse pour Desig

See all articles