👤

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.