2013 – 7

È dato il seguente programma:

#include 

int F(int a, int b) 
{
   if(a == b)
      return b;
   else if(a > b)
      return G(a-b, b);
   else
      return F(b, b-a);
}
int G(int a, int b) 
{
  if(a == b)
     return b;
  else if(a < b)
     return G(b-a, a);
  else
     return F(a-b, b);
}

void main() 
{
   printf("%d", F(30, 24));
}

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


Soluzione: 6


Osserva

  • F(30, 24) = G(30-24, 24)
  • G(6, 24) = G(24-6, 6)
  • G(18, 6) = F(18-6, 6)
  • F(12, 6) = G(12-6, 6)
  • G(6, 6) = 6, gli argomenti sono uguali.