Schauen wir uns zunächst eine Interviewfrage an. Die Frage lautet wie folgt: Es gibt einen Stapel und die Elemente 1, 2, 3, 4, 5 werden auf einmal hineingeschoben. Das Ergebnis ist [1,. 2, 3, 4, 5], jetzt können wir nur noch die rekursive Methode verwenden, um die Elemente im Stapel umzukehren, und das Ergebnis ist [5,4,3,2,1]. Wenn es keine Frageanforderung gibt, wäre dies relativ einfach. Sie können das Problem direkt mit arr.reverse() lösen, aber es ist interessant, nur Rekursion zu verwenden. Als Anfänger muss ich es sorgfältig studieren.
Wir betrachten den Stapel [1, 2, 3, 4, 5] als bestehend aus zwei Teilen: dem obersten Element 1 des Stapels und den restlichen Teilen [2, 3, 4, 5].
Wenn wir [2, 3, 4, 5] umkehren und in [5, 4, 3, 2] umwandeln können und dann das ursprüngliche obere Element 1 auf dem Stapel nach unten legen können, dann vollständig Der Stapel wird auf den Kopf gestellt und wird zu [5, 4, 3, 2, 1].
Als nächstes müssen wir zwei Dinge berücksichtigen: Erstens, wie man [2, 3, 4, 5] in [5, 4, 3, 2] umkehrt. Wir stellen uns [2, 3, 4, 5] einfach so vor, dass es aus zwei Teilen besteht: dem obersten Element 2 des Stapels und dem verbleibenden Teil [3, 4, 5].
Wir müssen nur [3, 4, 5] zuerst umkehren, um [5, 4, 3] zu werden, und dann das vorherige oberste Element 2 unten im Stapel platzieren, was zu [5, 4] wird , 3, 2].
Was die Umkehrung von [3, 4, 5] betrifft ... Viele Leser denken vielleicht, dass es sich hierbei um eine Rekursion handelt. Das heißt, jedes Mal, wenn Sie versuchen, einen Stapel umzukehren, springt das oberste Element des aktuellen Stapels heraus, kehrt dann den aus den verbleibenden Elementen bestehenden Stapel um und platziert schließlich das vorherige oberste Element am unteren Ende des aus den verbleibenden Elementen bestehenden Stapels. Die Bedingung für das Ende der Rekursion ist, dass der verbleibende Stapel leer ist
//这个函数的作用是把栈中的元素展开 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) }
Verwandte Empfehlungen:
Elemente im Stapel umkehren – Umkehrung des Stapels
Implementierung der Stapeltransposition
Das obige ist der detaillierte Inhalt vonJavaScript verwendet eine rekursive Methode, um Stapelelemente umzukehren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!