原理,递归反转栈
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Threading.Tasks; 5 6 namespace StacksReverse 7 { 8 public class Program 9 { 10 public void Main(string[] args) 11 { 12 StacksReverses stacksReverses = new StacksReverses(); 13 Stack<int> stack = new Stack<int>(); 14 15 stack.Push(1); 16 stack.Push(2); 17 stack.Push(3); 18 stack.Push(4); 19 stack.Push(5); 20 stack.Push(6); 21 stack.Push(7); 22 23 stacksReverses.reverse(stack); 24 25 Console.ReadLine(); 26 } 27 28 public class StacksReverses 29 { 30 public int GetAndRemoveLastElement(Stack<int> stack) 31 { 32 int result = stack.Pop(); 33 if (stack.Count() == 0) return result; 34 int last = GetAndRemoveLastElement(stack); 35 stack.Push(result); 36 return last; 37 } 38 public void reverse(Stack<int> stack) 39 { 40 if (stack.Count() == 0) return; 41 int i = GetAndRemoveLastElement(stack); 42 reverse(stack); 43 stack.Push(i); 44 } 45 } 46 } 47 }