In this assignment you will implement the following recursive function in a ZFunction class. You must implement a main that will gather the parameters for the recursive function and display the result. Use JOptionPlane for the input and output.

Given the function Z(x,y) where x and y are (small positive) integers:

Base case: if(x=0) Z(x,y) returns the value y+1

1st recursive case: if(x>0 and y=0) Z(x,y) returns the value Z(x-1,1)

2nd recursive case: else Z(x,y) returns the value Z(x-1,Z(x,y-1)

Notice that in the last case, the "inner" Z function will be computed first to provide the "y" for the "outer" Z function

So if this was to all go correct if I was to enter 3 for x and 3 for y the answer should be 61, or if I was to enter 4 for x and 0 for y the answer should be 13.

My first question is how do I make the inputs that I give run the z function with the x and y as variables

```
public class ZFunction {
private int x;
private int y;
public int z(int x, int y){
if (x==0)
return y+1;
else if (x>0 && y==0)
return z(x-1,1);
else
return z(x-1,z(x,y-1));
}
```

I don't believe z is suppose to be a variable at all, just a method.

here is my main:

```
public static void main(String[] args) {
String x = JOptionPane.showInputDialog("Enter the x value");
int z = Integer.parseInt(x);
String y = JOptionPane.showInputDialog("Enter the y value");
int z = Integer.parseInt(y);
JOptionPane.showMessageDialog(null, "Your x and y values are" + x + y);
}
}
```

The rest of the assignment can't be done until this part is done. But since I've been wasting 3-5 hours on the top part I think I might as well try for the last part.

But the rest of the assignment is after your program gets the correct answers, add static variables **calls**, **depth**, and **maxDepth** to your class and add code to your implementation of Z to keep track of total number of calls to the Z method and the maximum depth of the activation stack. To do the latter you must increment **depth**, whenever you enter Z and decrement it when you leave. **maxDepth** is the largest value that depth achieves during your run. Your **main** should display **calls** and **maxDepth** when it displays the value computed for the Z function