Si consideri la seguente funzione:
int f(int n) { if(n == 0) return 0; if(n%2 == 0) return 2*f(n/2); else return 2*f(n/2)+2; }Indicare qual è il valore restituito dall’invocazione f(f(2)).
Risposte:
- 2
- 4
- 6
- nessuna delle precedenti.
Soluzione: d (nessuna delle precedenti).
Osserva
- f(0): 0
- f(1): 2*f(0)+2 = 2*0+2 = 2
- f(2): 2*f(1) = 2*2 = 4
- f(3): 2*f(1)+2 = 2*2+2 = 6
- f(4): 2*f(2) = 2*4 = 8
- f(5): 2*f(2)+2 = 2*4+2 = 10
La funzione f() restituisce il doppio dell’argomento…
Quindi
- f(f(2)) = f(4) = 8.