Status Changing Recursion
Typer | Posted on | |
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);
}
}