Io francamente avrei evitato la ricorsione, visto che l'iterazione è più efficiente e la funzione iterativa in questo caso è di più semplice comprensione e utilizzo.
codice:
int maxarray(int array[], size_t elemCount)
{
    int max=array[0];
    for(unsigned int i=1;i<elemCount;i++)
    {
        if(max<array[i])
            max=array[1];
    }
    return max;
}