Dau coroana! Am nevoie doar de exemplul numeric, va rog din suflet sa îmi explicați cum se face

2. Se consideră subprogramul, f, definit alăturat. Ce valoare are f(20)?
int f(int n)
{ if (n==0) return 0;
return n%2+f(n/2);
}


Răspuns :

Răspuns:

Programul se opreste cand x este 0. Pana atunci, returneaza 1 + f( n / 2 ), daca n e impar si 0 + f ( n / 2 ), daca n e par ( pentru ca operatia n % 2 returneaza 0 daca n = par ). Bun, deci incepem cu 20 => f( 20 )= 0 + f( 10 ) = 0 + 0 + f( 5 ) = 0 + 0 + 1 + f( 2 ) = 1 + f( 1 ) = 1 + 1 + f( 0 ) = 2 + 0 = 2. Raspunsul final este 2

Explicație:

Daca mai ai vreo intrebare despre cum functioneaza functiile astea recursive intreaba-ma aici.