//用递归逆序输出一个栈
public static void main(String[] args) {
Stack objects = new Stack<>();
objects.add(1);
objects.add(2);
objects.add(3);
objects.add(5);
test(objects);
}
public static void test(Stack ob){
if (ob.isEmpty()){
return;
}
Object aa=ob.pop();
test(ob);
System.out.println(aa);
}
//用递归逆序一个栈
public static void main(String[] args) {
Stack objects = new Stack<>();
objects.add(1);
objects.add(2);
objects.add(3);
objects.add(5);
test1(objects);
System.out.println(objects.pop());
System.out.println(objects.pop());
System.out.println(objects.pop());
System.out.println(objects.pop());
}
public static void test(Stack ob){
if (ob.isEmpty()){
return;
}
Object aa=ob.pop();
test(ob);
System.out.println(aa);
ob.push(aa);
}
public static void test1(Stack ob){
if (ob.isEmpty()){
return;
}
//拿到最先进的数,并删除该元素(也就是栈底的数)
Object bb=test2(ob);
test1(ob);
//让最先进的数最后进
ob.push(bb);
}
private static Object test2(Stack ob) {
Object res = ob.pop();
if(ob.isEmpty()){
return res;
}
//获得最先进的元素,与此同时栈也被清空了
Object last = test2(ob);
//将栈还原,栈底元素就是最先入栈的(不包括之前删掉的数)
ob.add(res);
//返回最先进栈的数给调用方
return last;
}