2011 – 6

È dato il seguente programma:

#include 

int sfatt(int i) 
{
   if(i <= 1)
      return(i);
   else if(i%2 == 0)
      return(i*sfatt(i-1));
   else
      return(i*sfatt(i-2));
}

main() 
{
   printf("num = %d\n", sfatt(7));
}

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


Soluzione: 105


Osserva

  • sfatt(1) = 1
  • sfatt(2) = 2*sfatt(1) = 2*1 = 2
  • sfatt(3) = 3*sfatt(1) = 3*1 = 3
  • sfatt(4) = 4*sfatt(3) = 4*3 = 12
  • sfatt(5) = 5*sfatt(3) = 5*3 = 15
  • sfatt(6) = 6*sfatt(5) = 6*15 = 90
  • sfatt(7) = 7*sfatt(5) = 7*15 = 105

oppure

  • sfatt(7) = 7*sfatt(5) = 7*5*sfatt(3) = 7*5*3*sfatt(1) = 7*5*3*1 = 105