2008 – 5

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:

  1. 24
  2. 20
  3. 4
  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