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; } }