Maison  >  Article  >  interface Web  >  JavaScript utilise une méthode récursive pour inverser les éléments de la pile

JavaScript utilise une méthode récursive pour inverser les éléments de la pile

零到壹度
零到壹度original
2018-04-02 09:39:241716parcourir

Regardons d'abord une question d'entretien. La question est la suivante : il y a une pile, et les éléments 1, 2, 3, 4, 5 y sont poussés en même temps. 2, 3, 4, 5], nous ne pouvons désormais utiliser que la méthode récursive pour inverser les éléments de la pile, et le résultat est [5,4,3,2,1]. S'il n'y a pas d'exigence de question, ce serait relativement simple. Vous pouvez résoudre le problème directement avec arr.reverse(), mais il est intéressant de n'utiliser que la récursivité. En tant que novice, je dois l'étudier attentivement.

Analyse pratique

Nous considérons la pile [1, 2, 3, 4, 5] comme composé de deux Partiellement composés : l'élément supérieur 1 de la pile et les parties restantes [2, 3, 4, 5].

Si nous pouvons inverser [2, 3, 4, 5] et le transformer en [5, 4, 3, 2], puis placer l'élément supérieur d'origine 1 sur la pile vers le bas, alors le entière La pile est retournée et devient [5, 4, 3, 2, 1].

Ensuite, nous devons considérer deux choses : Premièrement, comment inverser [2, 3, 4, 5] en [5, 4, 3, 2]. Nous pensons simplement que [2, 3, 4, 5] est composé de deux parties : l'élément supérieur 2 et la partie restante [3, 4, 5].

Il suffit d'inverser [3, 4, 5] d'abord pour devenir [5, 4, 3], puis de placer l'élément supérieur précédent 2 en bas de la pile, qui devient [5, 4 , 3, 2].

Quant à savoir comment inverser [3, 4, 5]... de nombreux lecteurs peuvent penser qu'il s'agit d'une récursion. Autrement dit, chaque fois que vous essayez d'inverser une pile, l'élément supérieur de la pile actuelle apparaît, puis inverse la pile composée des éléments restants et place enfin l'élément supérieur précédent au bas de la pile composée des éléments restants. La condition pour la fin de la récursion est que la pile restante soit vide

Afficher une vague de code

//这个函数的作用是把栈中的元素展开
function reverseStack(arr){ 
  if(
  arr.length != 0
    )
  {
   var topItem = arr.pop() 
   reverseStack(arr) pushStack(arr, topItem) 
   } 
   return arr}//这个函数的作用是把函数进行颠倒
   function pushStack(arr, item){   else{    console.log(arr)
    if(arr.length == 0){
     arr.push(item)
   }

Recommandations associées :

Inverser les éléments dans la pile - inversion de la pile

Inverser la pile

Mise en œuvre de la transposition de pile

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