Implementation of a Recursive Function ( Due 07 Nov 2003 )

Consider the following recursive definition:
  Acker ( m, n ) = n + 1                                if m = 0
  Acker ( m, n ) = Acker ( m - 1, 1 )                   if n = 0
  Acker ( m, n ) = Acker ( m - 1, Acker ( m, n - 1 ) )  otherwise
The above function is called Ackermann's function. It is of interest because it grows rapidly with respect to the sizes of m and n. Implement a recursive method acker() that will compute this function for various values of m and n. Your method will also print out the intermediate values of m and n so that you can trace the recursive computations.

In your method main() you will experiment with various values of m and n to see the growth in the number of computations. Run your computation for the following pairs of values of m and n.

( m, n ) = ( 1, 1 ), ( 1, 2 ), ( 2, 1 ), ( 2, 2 )
Display your results neatly.

The file that you will be turning in will be called Ackermann.java. The file will have a header of the following form:

/*
  File: Ackermann.java

  Description:

  Student Name:

  Student UT ID:

  Course Name / Unique Number: CS 313E / 52320

  Date Created:

  Date Last Modified:

*/

Use the turnin program to submit the Ackermann.java file. The TA should receive your work by 11 PM, Friday, 07 November 2003.