Originariamente inviato da guajira
public static int f(int x) {

if(x == 1) return x;

int z = x % 2;

return 1 + f(x/2) + f(z + x/2);
}
È un metodo "ricorsivo" (richiama sé stesso). Parti dalla prima chiamata iniziale es. f(4), z vale 0 a quel punto viene chiamato 2 volte ricorsivamente prima con 2 (4/2) e poi con 2 (0 + 4/2). Prosegui così fino all'ultima chiamata che non effettuerà più la ricorsione grazie al test fatto con if.