2007 – 8

Si consideri la funzione

int ES8(int m)
{
    int a, b, c, g, t;
    a=m*m;
    b=a/2;
    c=4*b*a;
    t=m;
    g=m+a+t+t+a;
    while(g < b+a+c+c+a)
    {
        g=g+a+t+t+a;
        c=t+a+t+a;
    }
    return g;
}

Dire cosa restituisce la chiamata ES8(2)

Risposte:

  1. 19
  2. 32
  3. 38
  4. nessuna delle precedenti.

Soluzione: c (38)


Considera la chiamata ES8(2) e osserva i valori assunti dalla variabili

  • a=2*2=4
  • b=4/2=2
  • c=4*2*4=32
  • t=2
  • g=2+4+2+2+4=14
  • (4 < 2+4+32+32+4) ?
    • g=14+4+2+2+4=26
    • c=2+4+2+4=12
  • (26 < 2+4+12+12+4) ?
    • g=26+4+2+2+4=38
    • c=2+4+2+4=12
  • (38 < 2+4+12+12+4) ? NO

g=38 soddisfa la risposta c.