首頁  >  文章  >  web前端  >  JavaScript用遞歸方法實作顛倒堆疊的元素

JavaScript用遞歸方法實作顛倒堆疊的元素

零到壹度
零到壹度原創
2018-04-02 09:39:241717瀏覽

先看一個面試題,題目如下:有一個棧,往裡面一次壓入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, 4, 5]。

如果我們能把[2, 3, 4, 5]顛倒過來,變成[5, 4, 3, 2],然後在把原來的棧頂元素1放到底部,那麼就整個堆疊就顛倒過來了,變成[5, 4, 3, 2, 1]。

接下來我們需要考慮兩件事:一是如何把[2, 3, 4, 5]顛倒過來變成[5, 4, 3, 2]。我們只要把[2, 3, 4, 5]看成由兩部分組成:棧頂元素2和剩下的部分[3, 4, 5]。

我們只要把[3, 4, 5]先顛倒過來變成[5, 4, 3],然後再把之前的棧頂元素2放到最底部,也就變成了[5 , 4, 3, 2]。

至於怎麼把[3, 4, 5]顛倒過來…很多讀者可能會想到這就是遞歸。也就是每次試圖顛倒一個棧的時候,現在棧頂元素pop出來, 再顛倒剩下的元素組成的棧,最後把之前的棧頂元素放到剩下元素組成的棧的底部。遞歸結束的條件是剩下的堆疊已經空了

秀一波程式碼

//这个函数的作用是把栈中的元素展开
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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn