Вы, видимо, пытаетесь в каждом вызове функции передать весь массив.
Это не так просто делается и, на самом деле, не то, что вам нужно, потому что передана будет копия, а вы хотите изменить изначальный массив.
Указатель используется так:
int arr[32];
size_t index = 0;
recursive(&arr, index);
...
recursive(int **arr, index) {
if(index < 32) {
(*arr)[index] = 1;
recursive(arr, ++index);
}
}
Правда, это примитивный С-way.
В С++ вместо такого массива предполагается использовать вектор и передавать его по ссылке.