public class TraceRecursion { public static void main(String[] args) { System.out.println("fun 1: \n" + fun1(3)); System.out.println("-----------------------------------"); System.out.println("fun 2:"); fun2(3); System.out.println("-----------------------------------"); System.out.println("fun 3:"); fun3(4); System.out.println("-----------------------------------"); System.out.println("fun 4: \n" + fun4(3, 6)); System.out.println("-----------------------------------"); System.out.println("fun 4: \n" + fun4(4, 2)); System.out.println("-----------------------------------"); System.out.println("fun 5: "); fun5(4); System.out.println("\n-----------------------------------"); System.out.println("fun 6:"); System.out.println(fun6(8)); System.out.println("-----------------------------------"); System.out.println("fun strRecur:"); strRecur("wyo"); System.out.println("-----------------------------------"); System.out.println("fun chalupa:"); System.out.println(chalupa("parangaricutirimicuaro", 'a')); System.out.println("-----------------------------------"); } public static int fun1(int x) { if (x < 1) { return x; } else { return x + fun1(x - 1); } } public static void fun2(int x) { if (x < 1) { System.out.println("\nDONE"); } else { System.out.println(x); fun2(x - 1); } } public static void fun3(int x) { if (x < 1) { System.out.println("OUTPUT: "); } else { fun3(x - 1); System.out.println(x); } } public static int fun4(int x, int y) { if (y == 2) { return x; } else { return fun4(x, y - 1) + x; } } public static void fun5(int x) { if (x < 1) { System.out.print("\n-------\n"); } else { System.out.print(x); fun5(x - 1); System.out.print(x); } } public static int fun6(int x) { if (x < 1) { return x; } else { return x + fun6(x - 2); } } public static void strRecur(String s) { if (s.length() < 6) { System.out.println(s); strRecur(s + "*"); } } public static int chalupa(String n, char c) { if (n.length() == 1 && n.charAt(0) == c) { return 1; } if (n.length() == 1 && n.charAt(0) != c) { return 0; } else { if (n.charAt(0) == c) { return 1 + chalupa(n.substring(1), c); } else { return chalupa(n.substring(1), c); } } } }