用于打印堆栈内容的递归方法

时间:2016-12-03 09:10:19

标签: java recursion methods stack

所以我想编写一个方法来获取堆栈并递归打印其内容而不使用任何临时堆栈,并且在方法结束时堆栈将变为空。

关于如何开始的任何想法? :S

public static void main(String[] args) {
  Stack <Integer> IntegersStack = new Stack <Integer>();
  IntegersStack.push(1);
  printStack(IntegersStack);
  IntegersStack.push(2);
  printStack(IntegersStack);
  IntegersStack.push(3);
  printStack(IntegersStack);

  //now to prepare for prinitng
  IntegersStack.pop();
  printStack(IntegersStack);
  IntegersStack.pop();
  printStack(IntegersStack);
  IntegersStack.pop();
  printStack(IntegersStack);

}

public static void stackRecursive(Stack <Integer> ps) {
  if (ps.isEmpty()){
    System.out.println("Sorry stack is empty");
  } else {
    System.out.printf("%d",ps);
  }
}

}
是的,这可行吗?堆栈是空的吗?

2 个答案:

答案 0 :(得分:1)

创建一个方法,将堆栈作为参数并执行以下内容。取出一个元素并打印出来。将堆栈传递给方法,除非它是空的。

答案 1 :(得分:0)

你真的不需要递归来从上到下打印堆栈的内容,它应该看起来像

while (!stack.isEmpty()) {
    System.out.println(stack.pop());
}

如果您想从下到上打印它,您可以尝试这种递归方法:

private void printStack(Stack<Integer> stack) {
    if (stack.isEmpty()) {
        return;
    } else {
        int i = stack.pop();
        printStack(stack);
        System.out.println(i);
    }
}