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.
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.
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, nu ezitați să ne contactați. Așteptăm cu nerăbdare să vă revedem și nu uitați să ne salvați în lista de favorite!