Informatică, întrebare adresată de piil, 9 ani în urmă

Se da o functie recursiva care primeste un parametru n si returneaza nr obtinut prin scaderea cu 1 a cifrelor impare si marirea cu 1 a cifrelor pare. :((

Răspunsuri la întrebare

Răspuns de StarBack
1
Salut. Poti sa rezolvi problema in mai multe variante. Am sa iti las rezolvarea cerintei tale (Varianta I), apoi iti scriu o metoda mai scurta (Varianta II). Succes!

Varianta I
[se declara global cele doua variabile (ogl, p)]


int ogl = 0, p = 1;
int func(int n)
{
       if(n == 0)
             return ogl;
       else
       {
              if((n % 10) % 2 == 0)
              {
                      ogl = ogl + (n %1 0 + 1)  * p;
                      p *= 10;
                      return func(n / 10);
              }
              else
              {
                      ogl = ogl + (n%10 - 1)  * p;
                      p *= 10;
                      return func(n / 10);
              }
       }}

in functia main() se va apela in felul urmator:

func(<nume_variabila>);
cout<<ogl;


Varianta II
In aceasta varianta ai variabilele (ogl, p) ca argumente ale functiei.
int func(int n, int ogl, int p)
{
        
if(n == 0)
             return ogl;
        else
        {
                if((n % 10) % 2 == 0)
                      return func(n/10, ogl + (n%10 + 1) * p, 10 * p);
                else
                      return func(n/10, ogl + (n%10 - 1) * p, 10 * p);
        }
}

In functia main() se va apela in felul urmator:

cout << func(<nume_variabila>, 0, 1);

Acum depinde de tine care din ele iti este mai usor de inteles. Bafta!

piil: mersi ;;))
Alte întrebări interesante