class Recursion { public static int factorial(int n) { System.out.println(" factorial called with n="+n); int toRet; if(n == 0) { toRet = 1; } else { int temp = factorial(n-1); toRet = n*temp; //return n*factorial(n-1); } System.out.println(" returning from factorial("+n+")"); return toRet; } // End factorial() public static int fib(int n) { int toRet; System.out.println(" fib called with n="+n); if(n == 1) { toRet = 1; } else if(n == 2) { toRet = 1; } else { toRet = fib(n-1) + fib(n-2); } System.out.println(" returning from fib n="+n); return toRet; } // End fib() public static int gcd(int x, int y) { if(x < y) { int temp = x; x = y; y = temp; } return gcd_rec(x, y); } public static int gcd_rec(int x, int y) { if((x%y) == 0) { return y; } else { return gcd_rec(y, x%y); } } // End gcd_rec() public static void main(String[] args) { if(args.length != 2) { System.err.println("Usage: java Recursion "); System.exit(1); } int arg1 = Integer.parseInt(args[0]); int arg2 = Integer.parseInt(args[1]); //System.out.println(" "+factorial(arg)); System.out.println(" "+gcd(arg1, arg2)); } // End main() } // End class Recursion