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.
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
//这个函数的作用是把栈中的元素展开 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
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!