C++

#include<stack>

using namespace std;

class Solution {
public:
    stack<int> ReverseStackUsingRecursive(stack<int>& st) {
        if (st.empty()) {
            return st;
        }
        int i = process(st);
        ReverseStackUsingRecursive(st);
        st.emplace(i);
        return st;
    }
    int process(stack<int>& st) {
        int result = st.top();
        st.pop();
        if (st.empty()) {
            return result;
        }
        else {
            int last = process(st);
            st.emplace(result);
            return last;
        }
        
    }
};
int main() {
    int N;
    cin >> N;
    stack<int> st;
    int n;
    for (int i = 0; i < N; ++i) {
        cin >> n;
        st.emplace(n);
    }
    Solution sol;
    
    st = sol.ReverseStackUsingRecursive(st);
    for (int i = 0; i < N; ++i) {
        cout << st.top() << ' ';
        st.pop();
    }
    return 0;
}