问:

如何用递归倒置一个栈?

答:
这个递归函数一直递归调用自己来倒置栈里的元素,直到栈变空,然后开始出栈,并在出栈后将元素推入栈底。以此来达到完全倒置整个栈的效果。
举个例子,假设有栈[1, 2, 3, 4, 5],递归调用的过程是:
第一次调用:弹出5,栈变为[1, 2, 3, 4];递归调用reverse_stack([1, 2, 3, 4])
第二次调用:弹出4,栈变为[1, 2, 3];递归调用reverse_stack([1, 2, 3])
第三次调用:弹出3,栈变为[1, 2];递归调用reverse_stack([1, 2])
第四次调用:弹出2,栈变为[1];递归调用reverse_stack([1])
第五次调用:弹出1,栈为空;递归结束
然后开始出栈后推入栈底:
推入1,栈变为[1]
推入2,栈变为[2, 1]
推入3,栈变为[3, 2, 1]
推入4,栈变为[4, 3, 2, 1]
推入5,栈变为[5, 4, 3, 2, 1]
至此栈完全倒置。
通过上面这个递归的实现和例子,相信你已经理解了如何用递归来实现栈的倒置。如果有任何疑问,欢迎在评论中提出。