Si consideri la seguente funzione:
int foo(int m, int n) { int s, i; if(n <= 0) { s=m; } else { s=0; for(i=0; i <= n; i++) s += m; } return s; }Indicare qual è il valore restituito dall'invocazione di foo(4, 5)
Risposte:
- 24
- 20
- 4
- 16
Soluzione: a (24).
La funzione foo() calcola il valore dell'espressione m*(n+1) perché il ciclo for(), da 0 a n, esegue n+1 volte l'istruzione
s=s+m;
Osserva la tabella con le risposte per le coppie di parametri con valori da 0 a 5
0 | 1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 2 | 3 | 4 | 5 | 6 |
2 | 2 | 4 | 6 | 8 | 10 | 12 |
3 | 3 | 6 | 9 | 12 | 15 | 18 |
4 | 4 | 8 | 12 | 16 | 20 | 24 |
5 | 5 | 10 | 15 | 20 | 25 | 30 |