Ackermann Function Written in Java

Sat Apr 18 2015
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.