まず面接の質問を見てみましょう。質問は次のとおりです。スタックがあり、要素 1、2、3、4、5 が一度に押し込まれ、結果は [1, 2, 3] になります。 , 4, 5]。スタック内の要素を反転するには再帰的メソッドのみを使用できます。結果は [5,4,3,2,1] になります。質問の要件がない場合は、arr.reverse() を使用して問題を直接解決できますが、初心者としては再帰のみを使用するのが興味深いです。
スタック [1, 2, 3, 4, 5] は、スタックの最上位要素 1 と残りの部分 [2, 3] の 2 つの部分で構成されているとみなします。 、4、5]。
[2, 3, 4, 5] を反転して [5, 4, 3, 2] に変換し、元の一番上の要素 1 をスタックの一番下に置くことができれば、スタック全体は次のようになります。逆さまにすると[5、4、3、2、1]になります。
次に、2 つのことを考慮する必要があります。まず、[2, 3, 4, 5] を [5, 4, 3, 2] に反転する方法です。 [2, 3, 4, 5] は、スタックの最上位の要素 2 と残りの部分 [3, 4, 5] の 2 つの部分で構成されていると考えます。
最初に [3, 4, 5] を反転して [5, 4, 3] にし、次に前の一番上の要素 2 をスタックの一番下に置き、[5, 4, 3 , 2] にするだけです。 ]。
[3、4、5]を逆にする方法については...多くの読者はこれが再帰だと思うかもしれません。つまり、スタックを反転しようとするたびに、現在のスタックの最上位要素が飛び出し、次に残りの要素で構成されるスタックを反転し、最後に、前の最上位要素が残りの要素で構成されるスタックの最下位に配置されます。再帰の終了条件は、残りのスタックが空であることです
//这个函数的作用是把栈中的元素展开 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) }
関連する推奨事項:
以上がJavaScript は再帰的メソッドを使用してスタック要素を反転しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。