Ho un problema con la seguente funzione.. non riesco a capire cosa c'è che non va.. mi stampa sempre false...
Ecco la specifica:
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.
codice:#include <iostream> using namespace std; bool ricorsiva(int v[], int dim, int i); int main(){ int i=0; const int dim=7; int v[dim]={1,3,2,6,3,3,2}; if(ricorsiva(v,dim,i)){ cout<<"ok"<<endl; } else{ cout<<"no"<<endl; } system("pause"); return 0; } bool ricorsiva(int v[], int dim, int i){ if(i==dim-3) return true; if(v[i] + v[i+1] % 2 == 0 && v[i+1] + v[i+2] % 2 == 0) return false; if(v[i] + v[i+1] % 2 != 0 && v[i+1] + v[i+2] % 2 != 0) return false; return ricorsiva(v,dim,i++); }

Rispondi quotando