Maison > interface Web > js tutoriel > le corps du texte

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

Susan Sarandon
Libérer: 2024-10-18 07:55:03
original
586 Les gens l'ont consulté

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!
Copier après la connexion

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!

source:php
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal