Pure Inorder Recursion

public class PureInorderRecursion {

    static StringBuilder output = new StringBuilder();

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

    static void fun(int n, int level) {
        if (n > 0) {
            printIndent(level);
            System.out.println("fun(" + (n - 1) + ")");

            fun(n - 1, level + 1);

            printIndent(level);
            System.out.println("print " + n + "   <-- output");
            output.append(n).append(" ");

            printIndent(level);
            System.out.println("fun(" + (n - 1) + ")");

            fun(n - 1, level + 1);
        }
    }

    static void printIndent(int level) {
        for (int i = 0; i < level; i++) {
            System.out.print("│   ");
        }
    }
}

 

Scroll to Top