Un approccio semplice può essere del tipo:
codice:
void funzione(int * vec, unsigned int dim)
{
    helper_funzione(vec, dim, 0);
}

void helper_funzione(int * vec, unsigned int dim, int sum)
{
    if(dim!=0)
    {
        *vec+=sum;
        helper_funzione(vec+1, dim-1, *vec);
    }
}
Ragionaci un po' su per capire come funziona.

Tra parentesi, nel main l'uso e la dichiarazione dell'array sono errati: int* vet[DIM] non dichiara un vettore di DIM int, ma un vettore di DIM puntatori ad int; inoltre, funzione(vet[DIM], DIM) richiama funzione passandoci il DIM-esimo elemento di vet. Ripassati il capitolo sui vettori nel tuo libro di C...