public class TestRecursion {

    public int value = 0;
    public TestRecursion child = null;

    public TestRecursion(int n)
    {
        this.value = n;

        if(n > 0)
        {
            child = new TestRecursion(n - 1);
        }
    }

    public int fibonacci(int n)
    {
        if(n < 2)
        {
            return n;
        }
        else
        {
            return fibonacci(n - 1) + this.fibonacci(n - 2);
        }
    }

    public int ackermann(int m, int n)
    {
        if (m == 0) return n + 1;
        if (n == 0) return ackermann(m - 1, 1);
        return ackermann(m - 1, ackermann(m, n - 1));
    }
}