2011 – 7

È dato il seguente programma:

#include 

void f(int T[], int i, int dim) 
{
   if(i < dim) 
   {
       f(T, 2*i+1, dim);
       printf("%d", T[i]);
       f(T, 2*i+2, dim);
   }
}

main() 
{
   int Q[8]={1, 2, 3, 4, 5, 6, 7, 8};
   printf("ris = ");
   f(Q, 0, 8);
}

Cosa viene visualizzato a video dall'esecuzione di main()?


Soluzione: ris = 84251637


Osserva le chiamate e gli elementi di Q stampati a video

  • f(0,8)
  • f(1,8) 1 f(2,8)
  • f(3,8) 2 f(4,8) 1 f(5,8) 3 f(6,8)
  • f(7,8) 4 f(8,8) 2 f(9,8) 5 f(10,8) 1 f(11,8) 6 f(12,8) 3 f(13,8) 7 f(14,8)
  • f(15,8) 8 f(16,8) 4 2 5 1 6 3 7
  • 8 4 2 5 1 6 3 7