P7-8 递归实现栈逆序

书中思路 Python实现

import sys
sys.setrecursionlimit(3000) 

class Solution(object):
    def __init__(self):
        self.stack = []

    def getAndRemoveLastElement(self):
        result = self.stack.pop()
        if not self.stack:
            return result
        else:
            last = self.getAndRemoveLastElement()
            self.stack.append(result)
            return last

    def reverse(self):
        if not self.stack:
            return
        i = self.getAndRemoveLastElement()
        self.reverse()
        self.stack.append(i)

s = Solution()
n = int(input())

s.stack=list(map(int,input().split()))
s.reverse()

print(' '.join(str(i) for i in s.stack))

这题如果严格按照递归思路来解题, 需要对python的递归深度进行设置, 将默认的递归深度上限修改大一些即可过OJ,但python实现栈仍需使用list辅助,故排行榜上的优秀python解法并未使用递归, 而是借助python的内置函数

排行榜优解

n = input()
stack =list(map(str, input().split()))
print(' '.join(stack[::-1]))