#define RECURSIVE_ARRAY_FUNC(NAME, TYPE, CODE) \ void NAME(TYPE array[], int n) { NAME ## _kernel (array, n, 0); } \ void NAME ## _kernel(TYPE array[], int n, int pos) { \ if (< pos n) { \ CODE; \ NAME ## _kernel(array, n, (+ pos 1)); \ } \ } RECURSIVE_ARRAY_FUNC(increment, int, array[i] = array[i] + 1) RECURSIVE_ARRAY_FUNC(dincrement, double, array[i] = array[i] + 1)