Buon giorno a tutti,

Mi presnto sono ferra03 mi sono iscritto da poco a questo forum e volevo chiedervi un aiuto per un problema, devo sostenere un'esame di programmazione e c'è un'esercizio di un facsimile del mio esame che proprio non riesco a capire , vi copio il testo:

Scrivere nel riquadro il risultato ottenuto invocando il seguente
metodo ricorsivo con la chiamata f(5).

public static int f(int x) {
if (x == 0 || x == 1)
return x;
return f(x/2) + f(x%2) + x;
}

chiamando f(5) la soluzione pubblicata dal prof. è 9 e non riesco a capire il perchè, vi sarei grato se potese darmi una mano.

Grazie a tutti in anticipo