JavaScript は再帰的メソッドを使用してスタック要素を反転します

零到壹度
リリース: 2018-04-02 09:39:24
オリジナル
1776 人が閲覧しました

まず面接の質問を見てみましょう。質問は次のとおりです。スタックがあり、要素 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート