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:
- 32
- 64
- 128
- 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.