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...