👤
Misto123
a fost răspuns

imi explica cineva cum se lucreaza?
Scrieţi valoarea care se obţine în urma apelului f(5427)


Imi Explica Cineva Cum Se LucreazaScrieţi Valoarea Care Se Obţine În Urma Apelului F5427 class=

Răspuns :

Trebuie sa te gandesti ce se intampla la ce inceput si la final. 

Codul spune ca daca x e zero sa dea return 0.Deci  in cele din urma (prin imapartiri repetate : f(x/10)) functia va da 0. Deci f(x/10)*10 la un moment dat va fi 0 (asta la sfarsit).

Un alt lucru pe care trebuie sa observi e ca functia depinde de ultima cifra (X%2==1 - inseamana ca restul sa fie 1 adica numarul sa fie IMPAR).

Daca nr. e impar (adica NU se termina in 0,2,4,6,8)   atunci sa returneze f(x/10) care inseamna numarul fara ultima cifra (5427/10=542) *10+ultima cifra a numarului (care va fi 1,3,5,7,9)-1 (adica ultima cifra va fi transformata intruna para -> 3-1=2)

Daca nr. e par atunci sa returneze f(x/10)*10+(ultima cifra +1 ) -->impar

Acum iei numarul tau 5427 si il treci prin cod:
      x%2==1 (adevarat deoarece 5427 e impar). Deci returneaza (aceasta va fi valoarea care ne intereseaza sa afisam):   
                       f(542)*10+7-1=f(542)*10+6
     f(542)=f(54)*10+2+1=f(54)*10+3
     f(54)=f(5)*10+4+1=f(5)*10+5
     f(5)=f(0)*10+4=4
     f(0)=0

Adunam si ne da: [(4*10+5)*10+3]*10+6=4536

Si daca n-ai observat pana acum poti spune deja ce face algoritmul. Pentru fiecare cifra ii va adauga 1 daca para si va scadea 1 daca impara.