Python 3.x 在我的程序中尝试使用append、empty()和pop并在没有迭代的情况下反转堆栈时出现递归错误 使用空的pop和append并在没有迭代的情况下反转堆栈。 我们将使用递归调用。 驱动程序代码 我得到一个错误: 递归错误:调用Python对象时超出了最大递归深度。
hi您需要更改Python 3.x 在我的程序中尝试使用append、empty()和pop并在没有迭代的情况下反转堆栈时出现递归错误 使用空的pop和append并在没有迭代的情况下反转堆栈。 我们将使用递归调用。 驱动程序代码 我得到一个错误: 递归错误:调用Python对象时超出了最大递归深度。,python-3.x,oop,recursion,data-structures,stack,Python 3.x,Oop,Recursion,Data Structures,Stack,hi您需要更改reverse\u堆栈 您忽略了停止递归 你可以这样做: stack = create_stack() push(stack, str(4)) push(stack, str(3)) push(stack, str(2)) push(stack, str(1)) print("Original stack:") reverse_stack(stack) print("Reversed stack:") print_stack(stack) 让我们试试看: def reverse_
reverse\u堆栈
您忽略了停止递归
你可以这样做:
stack = create_stack()
push(stack, str(4))
push(stack, str(3))
push(stack, str(2))
push(stack, str(1))
print("Original stack:")
reverse_stack(stack)
print("Reversed stack:")
print_stack(stack)
让我们试试看:
def reverse_stack(stack_q, len_s= None):
if len_s is None:
len_s = len(stack_q)
if len_s in (0, 1):
return
stack_q.insert(len(stack_q) - len_s, stack_q.pop())
len_s -=1
reverse_stack(stack_q, len_s)
这是您期望的答案?非常感谢@BenyGj。非常感谢@Beny Gj。您建议的更改很有见地。
stack = create_stack()
push(stack, str(4))
push(stack, str(3))
push(stack, str(2))
push(stack, str(1))
print("Original stack:")
reverse_stack(stack)
print("Reversed stack:")
print_stack(stack)
def reverse_stack(stack_q, len_s= None):
if len_s is None:
len_s = len(stack_q)
if len_s in (0, 1):
return
stack_q.insert(len(stack_q) - len_s, stack_q.pop())
len_s -=1
reverse_stack(stack_q, len_s)
a = list(range(1, 10))
a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
reverse_stack(a)
a
[9, 8, 7, 6, 5, 4, 3, 2, 1]