如何僅用遞迴函式和棧操作逆序乙個棧

2021-09-25 08:45:49 字數 655 閱讀 9211

題目:

乙個棧依次壓入1、2、3、4、5,那麼從棧頂到棧底分別為5、4、3、2、1。將這個棧轉置後,從棧頂到棧底為1、2、3、4、5,也就是實現棧中元素的逆序,但是只能用遞迴函式實現,不能使用其他資料結構。

基本思路:

首先實現乙個遞迴函式 a,其功能是返回並移除棧底元素。之後再實現乙個遞迴函式 b,其功能是不斷用遞迴的臨時變數去接住 a 函式返回的棧底元素,這樣,最後乙個棧底元素就是原來棧的棧頂元素,之後一層一層的將遞迴中的臨時變數壓入棧中,這樣就實現了逆序

def getandremovelastelement(stack):

"""將棧的棧底元素刪除並返回"""

result = stack.pop()

if len(stack)==0:

return result

else:

last = getandremovelastelement(stack)

return last

def reverse(stack):

""" 逆序乙個棧 """

if len(stack)==0:

return

i = getandremovelastelement(stack)

reverse(stack)

如何僅用遞迴函式和棧操作逆序乙個棧

題目 乙個棧依次壓入1,2,3,4,5那麼從棧頂到棧底分別為5,4,3,2,1。將這個棧轉置後,從棧頂到棧底為1,2,3,4,5,也就是實現棧中元素的逆序,但是只能用遞迴函式來實現,而不能用另外的資料結構。解答 本題考察棧的操作和遞迴函式的設計,我們需要設計出兩個遞迴函式。遞迴函式一 將棧stack...

如何僅用遞迴函式和棧操作逆序乙個棧

題目 乙個棧依次壓入1 2 3 4 5,那麼從棧頂到棧底分別為5 4 3 2 1,將這個棧轉置後,從棧頂到棧底為1 2 3 4 5,也就是實現棧中元素的逆序,但是只能用遞迴函式來實現,不能用其他資料結構。思路 具體實現如下reverse方法 getandremovelastelement方法在圖中簡...

如何僅用遞迴函式和棧操作逆序乙個棧

題目 乙個棧一次壓入1 2 3 4 5 那麼從棧頂到棧底分別為 5 4 3 2 1,將這個棧逆序,只能用遞迴,不能用其他資料結構。思路 先設計乙個遞迴函式得到棧底元素 再設計乙個遞迴函式,逆序乙個棧 實現 public class main 得到棧底元素 public static intgetan...