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

Cerința
Scrieți funcția recursivă IncDecRec care primind ca parametru un număr natural n, returnează numărul obținut din n prin scăderea cu 1 a fiecărei cifre impare și creșterea cu 1 a fiecărei cifre pare.
Restricții și precizări;
0 ≤ n ≤ 999.999.999
Numele funcției este IncDecRec.
Se recomandă utilizarea recursivității în rezolvarea problemei. De asemenea, se recomandă să nu se folosească alte funcții suplimentare.
Exemplu
IncDecRec(4321) = 5230.

PLS HELP!!!!

Răspunsuri la întrebare

Răspuns de Daniel4761
3

int IncDecRec(int n)

{

if(n)

 if(n%2!=0)

  return IncDecRec(n/10)*10+n%10-1;

 else return IncDecRec(n/10)*10+n%10+1;

else return 0;  

}


Daniel4761: Daca pui 1 vei avea o cifra in plus si numarul va incepe cu 1
Daniel4761: Functia cand ajunge la n=0, se va duce inapoi pe ramurile pe care a mers. De exemplu, daca ai n=2345, dupa n=0 se va intoarce la prima cifra adica 2 si va fi 0*10+2+1 care este 3. Daca return=1 atunci va fi 1*10+2+1 care este 13 ceea ce este gresit.
ovdumi: corect ce zici numau ca daca bagi n=0 rezultatul este 0 in loc de 1 pentru ca zero e par
ovdumi: deci undeva in main trebuie testat n
ovdumi: daca n=0 fortezi iesirea fara sa apelezi functia
ovdumi: sau poate modifici functia
ovdumi: ok?
Daniel4761: Inteleg ce vrei sa spui
Daniel4761: Dar nu reusesc sa modific raspunsul ca am refacut functia
ovdumi: negociaza cu ramadan
Alte întrebări interesante