Maison  >  Article  >  interface Web  >  Comment fonctionne la récursion dans la fonction \"FindSequence\" ?

Comment fonctionne la récursion dans la fonction \"FindSequence\" ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-18 07:55:03498parcourir

How Does Recursion Operate in the

Plonger dans la récursion de "FindSequence"

Javascript éloquent introduit un problème difficile : écrire une fonction qui génère une séquence d'additions et de multiplications pour atteindre un objectif donné . Le code fourni utilise la récursion, ce qui soulève des questions sur son fonctionnement.

Dans la fonction findSequence réside une fonction imbriquée find. Cette fonction explore de manière récursive deux transformations possibles à partir d'un nombre actuel : ajouter 5 ou multiplier par 3. Chaque transformation produit un nouveau nombre, et le processus se poursuit jusqu'à ce que l'objectif soit atteint ou que le nombre actuel dépasse l'objectif.

À chaque étape, une représentation textuelle de l’expression est transmise. Par exemple, en commençant par le chiffre 1, l’expression initiale est « 1 ». Si l'ajout de 5 est choisi, l'expression devient "(1 5)". En enregistrant ces expressions, la fonction suit les étapes franchies pour atteindre chaque nombre.

Si l'objectif est atteint, l'expression de l'étape finale représente une séquence valide. Sinon, la fonction renvoie null, indiquant un échec. Plusieurs appels récursifs sont effectués, chacun explorant un chemin différent jusqu'à ce qu'une séquence valide soit trouvée ou que tous les chemins soient épuisés.

Pour illustrer la récursion, considérons trouver une séquence pour l'objectif numéro 14.

(1, "1")
(5, "1 + 5")
(10, "(1 + 5) + 5")
(15, "((1 + 5) + 5) + 5")  // Discard, exceeds goal
(30, "((1 + 5) + 5) * 3")  // Discard, exceeds goal
(15, "(1 + 5) * 3")  // Discard, exceeds goal
(3, "1 * 3")
(8, "(1 * 3) + 5")
(13, "((1 * 3) + 5) + 5")
(18, "(((1 * 3) + 5) + 5) + 5")  // Discard, exceeds goal
(39, "(((1 * 3) + 5) + 5) * 3")  // Discard, exceeds goal
(24, "((1 * 3) + 5) * 3")  // Discard, exceeds goal
(9, "(1 * 3) * 3")
(14, "((1 * 3) * 3) + 5")  // Success!

Grâce à ce processus de récursion par étapes, la fonction finit par trouver la séquence : "((1 3) 3) 5", qui représente l'ajout de 5 au produit de 1 et 3 au cube .

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:
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