2008 – 7

Si consideri la seguente funzione:

int foo(int N)
{
    int i,
        R=1;
    for(i=0; i < N; i++)
        R=R+R;
    return R;
}

Indicare qual è il valore restituito dall’invocazione di foo(6)

Risposte:

  1. 32
  2. 64
  3. 128
  4. nessuno dei precedenti.

Soluzione: b (64).


La funzione foo() restituisce i risultati

  • foo(0) = 1
  • foo(1) = 1 -> 1+1=2
  • foo(2) = 1 -> 1+1=2 -> 2+2=4
  • foo(3) = 1 -> 1+1=2 -> 2+2=4 -> 4+4=8
  • foo(4) = 1 -> 1+1=2 -> 2+2=4 -> 4+4=8 -> 8+8=16
  • foo(5) = 1 -> 1+1=2 -> 2+2=4 -> 4+4=8 -> 8+8=16 -> 16+16=32
  • foo(6) = 1 -> 1+1=2 -> 2+2=4 -> 4+4=8 -> 8+8=16 -> 16+16=32 -> 32+32=64
  • foo(7) = 1 -> 1+1=2 -> 2+2=4 -> 4+4=8 -> 8+8=16 -> 16+16=32 -> 32+32=64 -> 64+54=128
  • ...

Calcola 2N.