Looks to me like the max function just returns the max of two values. The function that would do the recursion is maxArray. If you do have to do recursion, remember that you must have a base case. The obvious choice here is when there are no more values in the array to compare. At that point, the maximum value (that you have been keeping track of) can be returned. I guess my prototype would look something like:

Code:

int maxArray(int *array, int size);

Then, for the base case, inside the function:

Code:

if (size == 1)
return MAX(cur_max, array[0]);

I'll leave the other case to you, where you actually keep track of the maximum value and compare successive elements in the array.