/** A class of static recursive mathematical functions. */
public class MathRecursion {
  

    /** Yields: n! */
    public static int factorial(int n) {
        if (n==0) { // Base case
            return 1;
        } 
        
        // Recursive case.
        return n*factorial(n-1);
    }
 
    /** Yields: the nth Fibonacci number a_n = a_{n-1}+a_{n-2}*/
    public static int fibonacci(int n) {
        if (n==0 || n==1) { // Base cases
            return 1;
        }
        
        // Recursive case.
        return fibonacci(n-1)+fibonacci(n-2);
    }
}