```
class Ackermann_function
{
    public static void main(String[] args)
    {
        //prints intro

        System.out.println("This program will solve for all values in ackermann
function using recursion.1");

        System.out.println("**************************n")
        //calls for all values of ackerman using for loop
        for(int i = 0; i < 6; i ++)
        {
            for(int j = 0; j < 10; j ++)
            {
                System.out.println("Ackerman (" + i + "," + j + ") is: " +
ack(i,j));
            }
        }

        //test sinlge
        //System.out.println(ack(3,1));
    }

    public static int ack(int m, int n)
    {
        if(m == 0)
        {
            return(n + 1);
        }
        else if(m > 0 && n == 0)
        {
            return(ack(m-1,1));
        }
        else if(m >0 && n > 0);
        {
            return(ack(m-1, ack(m,n-1)));
        }
    }
}
```

The Ackermann function is a classic example of a function that is not primitive
recursive – you cannot solve it using loops like Fibonacci. In other words, you
have to use recursion to solve for values of the Ackermann function.

For more information on the Ackermann function [click
here](https://en.wikipedia.org/wiki/Ackermann_function).
