```java 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).