Si scriva in C++ una funzione ricorsiva che riceva un array di numeri interi e la sua dimensione e restituisca TRUE se le somme di due interi consecutivi nell’array sono alternatamente una pari ed una dispari, ossia comunque si prenda un intero x nell’array, se la somma di x con l’intero che lo precede è pari (risp. dispari), la somma di x con l’intero che lo segue deve essere dispari (risp. pari). Esempio: la funzione invocata su un array contenente la sequenza di interi 1 3 2 6 3 3 2 dovrà restituire TRUE. Infatti le somme degli interi consecutivi sono 1+3 - pari, 3+2 – dispari, 2+6 – pari, 6+3 – dispari, 3+3 – pari, 3+2 – dispari.
Specificare quale deve essere la prima invocazione per la funzione.


La mia bozza di soluzione è:

codice:
bool parialternati(int M[], int dim, int i){
     
     if(dim%2==0) //passo base
     return false;
     
     
     if(M[i] + M[i+1]%2==0 && M[i+2] + M[i+3]%2!=0) //passo ricorsivo
     return true;
     
     return parialternati(M[], dim, ++i);
     }
     
     
    La prima invocazione per la funzione deve essere:
           parialternati(M, dim, 1);

Cosa sbaglio? C'è un altro modo per farlo senza far camminare l'indice i di cosi' tanto?