È dato il seguente programma:
#includeint 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