2014 – 6

È dato il seguente programma:

#include 
int 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.