Originariamente inviato da ferra03
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è
Essendo un metodo ricorsivo, basta che deduci il flusso e cosa viene passato e poi restituito dai livelli inferiori di ricorsione.

All'inizio viene invocato con 5. Dentro hai 2 invocazioni ricorsive: una con valore 2 e l'altra con valore 1. Ecc....