In: Computer Science
/**
* Write a recursive function that accepts a stack of integers and
* replaces each int with two copies of that integer. For example,
* calling repeatStack and passing in a stack of { 1, 2, 3} would change
* the stack to hold { 1, 1, 2, 2, 3, 3}. Do not use any loops. Do not use
* any data structures other than the stack passed in as a parameter.
* @param stack
*/
public static void repeatStack(Stack<Integer> stack) {}
import java.util.Stack;
public class RepeatStack {
    /**
     * Write a recursive function that accepts a stack of integers and
     * <p>
     * replaces each int with two copies of that integer. For example,
     * <p>
     * calling repeatStack and passing in a stack of { 1, 2, 3} would change
     * <p>
     * the stack to hold { 1, 1, 2, 2, 3, 3}. Do not use any loops. Do not use
     * <p>
     * any data structures other than the stack passed in as a parameter.
     *
     * @param stack
     */
    public static void repeatStack(Stack<Integer> stack) {
        if (!stack.isEmpty()) {
            int num = stack.pop();
            repeatStack(stack);
            stack.push(num);
            stack.push(num);
        }
    }
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        System.out.println("Original stack: " + stack);
        repeatStack(stack);
        System.out.println("Modified stack: " + stack);
    }
}