import java.util.*;
public class ReverseStack {
public int[] reverseStackRecursively(int[] stack, int top) {
// write code here
// r(stack, top - 1, 0);
// return stack;
Stack<Integer> stackAns = new Stack<>();
for (int i : stack) {
stackAns.push(i);
}
r(stackAns);
for (int i = 0; i < stackAns.size(); i++) {
stack[i] = stackAns.get(i);
}
return stack;
}
private void r(Stack<Integer> stackAns) {
int pop = f(stackAns);
if (stackAns.isEmpty()) {
stackAns.push(pop);
return;
}
r(stackAns);
stackAns.push(pop);
}
private Integer f(Stack<Integer> stackAns) {
Integer pop = stackAns.pop();
if (stackAns.isEmpty()) {
return pop;
}
Integer last = f(stackAns);
stackAns.push(pop);
return last;
}
}