Comment utiliser la récursivité dans votre code javascript

Vous pouvez appeler des fonctions de l'extérieur de la fonction ou à partir d'autres fonctions avec javascript. Vous pouvez même appeler une fonction au sein de lui-même. Quand une fonction se nomme, il utilise une technique de programmation appelé recurSion.

Vous pouvez utiliser la récursivité dans bon nombre des mêmes cas où vous souhaitez utiliser une boucle, sauf qu'il répète les déclarations au sein d'une fonction.

Voici une fonction récursive simple. Cette fonction récursive a un gros problème, cependant. Pouvez-vous repérer?




fonction squareItUp (startingNumber) {var carré = startingNumber * startingNumber-console.log (carré) -squareItUp (carré) -}

Voyez-vous la question avec cette fonction? Ça ne finit jamais. Il va juste continuer à se multiplier nombres ensemble jusqu'à ce que vous arrêtiez.

L'exécution de cette fonction sera probablement planter votre navigateur, sinon votre ordinateur. Aucun dommage permanent sera fait, bien sûr, mais il est suffisant pour vous venez de lire le code et remarquez le problème ici.

Cet exemple améliore la squareItUp () fonction en fournissant ce qu'on appelle un cas de base. Un cas de base est la condition dans laquelle le travail d'une fonction récursive est fait et il devrait arrêter. Chaque fonction récursive doit avoir un cas de base.

fonctionner squareItUp (startingNumber) {square = startingNumber * startingNumber-si (carré> 1000000) {console.log (carré) -} else {squareItUp (carré) -}}

Là. C'est mieux! Mais, cette fonction a toujours un gros problème. Que faire si quelqu'un passe un nombre négatif, zéro ou 1 en elle? Le résultat de tous ces cas serait encore une boucle infinie. Pour se protéger contre une telle situation, vous avez besoin d'une condition de terminaison. Dans le code ci-dessous, un contrôle pour vérifier que l'argument est égale ou supérieure à ou égale à 1 et qu'il ne soit pas autre chose qu'un numéro a été ajouté. Dans les deux cas, la fonction sera immédiatement cesser.

fonction squareItUp (startingNumber) {// conditions de résiliation, inputif invalide ((typeof startingNumber! = 'numéro') || (startingNumber lt; = 1)) {return - 1- // quitter la fonction} carré = staringNumber * startingNumber - // conditionif de base (carré> 1000000) {console.log (carré) - // Imprimer la valeur finale} else {/ / Si la condition de base est pas respectée, faire again.squareItUp (carré) -}}

» » » » Comment utiliser la récursivité dans votre code javascript