Status Changing Recursion

public class StatusChangingRecursion {

    static StringBuilder output = new StringBuilder();

    public static void main(String[] args) {
        int x = 4;
        System.out.println("=== Recursive Trace ===");
        fun(x, 0); // initial call with level 0 for indentation
        System.out.println("\n\n=== Final Output ===");
        System.out.println(output.toString().trim());
    }

    static void fun(int x, int level) {
        if (x > 0) {
            printIndented("fun(" + x + ")", level);

            x = x - 1;
            fun(x, level + 1);

            printIndented("print " + x + "  <<-- output", level);
            output.append(x).append(" ");

            x = x - 1;
            fun(x, level + 1);
        }
    }

    static void printIndented(String text, int level) {
        for (int i = 0; i < level; i++) {
            System.out.print("│   ");
        }
        System.out.println(text);
    }
}

 

Scroll to Top