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
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!
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
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă