Informatică, întrebare adresată de Miriapodelaaa22, 8 ani în urmă

Să se realizeze în C++ un subprogram recursiv care să verifice dacă toate elementele unui șir sunt pare. ​

Răspunsuri la întrebare

Răspuns de andrei750238
6

► Functie :

bool par(int v[], int n){

   if(n<0) return 1;

   if(v[n]%2==0) return par(v,n-1);

   else return 0;

}

► Exemplu apel :

...

int v[]={2,6,8,12,24,26}, n=6;

if(par(v,n)) cout << "Toate elementele sunt pare";

else cout << "Toate elementele sunt impare"

► Mod functionare :

Conditia de oprire : indicele primit este mai mic decat 0. Atunci cand am ajuns la un indice mai mic decat 0 ne oprim si returnam 1.

Daca elementul curent e par verificam elementul de pe pozitia anterioara. Daca elementul curent e impar atunci returnam 0 recursiv (elementele nu sunt toate pare)


Miriapodelaaa22: Mulțumesc mult, mai ales pentru explicație!
Miriapodelaaa22: Am o nelămurire. Dacă n=0 de la inceput, adica vectorul nu are niciun element, în acest caz se va afișa 1, deci nu ar fi corect. În ex cu șiruri rezolvate în clasă, primul if verifă mereu dacă x este diferit de 0. Noi așa am făcut.
Miriapodelaaa22: Deși, mi se pare imposibil să citești un șir fără elemente, dându-i lui n valoarea 0.
andrei750238: Poti pune conditie suplimentara in functia main pentru a verifica acest caz specific, eu nu l-am luat in considerare.
Alte întrebări interesante