2009 – 7

È dato il seguente frammento di programma:

void ricorsiva(int n) 
{
   int m;
   m=n/2;
   if(m != 0)
      ricorsiva(m);
   printf("%1d", n%2);
}

main() 
{
   ricorsiva(729);
}

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


Soluzione: 1011011001


Osserva la sequenza di chiamate ricorsive e i valori visualizzati

r(729) = r(364)1 = r(182)01 = r(91)001 = r(45)1001 = r(22)11001 = r(11)011001 = r(5)1011001 = r(2)11011001 = r(1)011011001 = 1011011001

La sequenza dei resti modulo 2 dal meno significativo… la conversione in base 2 di 729