2012 – 6

È dato il seguente programma:

#include 
int f(int i) 
{
   if(i <= 1)
      return(i);
   else if(i%2 == 0)
      return(-i*f(i-1));
   else
      return(i*f(i-1)); 
}
main() 
{
   printf("num = %d\n", f(7));
}

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


Soluzione: -5040


Osserva

  1. f(0) = 0
  2. f(1) = 1
  3. f(2) = -2*f(1) = -2*1 = -2
  4. f(3) = 3*f(2) = 3*-2 = -6
  5. f(4) = -4*f(3) = -4*-6 = 24
  6. f(5) = 5*f(4) = 5*24 = 120
  7. f(6) = -6*f(5) = -6*120 = -720
  8. f(7) = 7*f(6) = 7*-720 = -5040