È dato il seguente programma:
#includeint g(int x); int f(int x) { if(x <= 0) return 0; else if (x%2==0) return g(x/2); else return g((x+1)/2); } int g(int x) { if(x <= 0) return 0; else return 1+f(x-2); } void main() { printf("%d", f(100)); } Cosa viene visualizzato a video dall’esecuzione di main()?
Soluzione: 5
Osserva
f(100) = g(50) = 1+f(48) = 1+g(24) = 1+1+f(22) = 1+1+g(11) = 1+1+1+f(9) = 1+1+1+g(5) = 1+1+1+1+f(3) = 1+1+1+1+g(2) = 1+1+1+1+1+f(0) = 1+1+1+1+1+0 = 5.