Si consideri la seguente funzione
int calcola(int n) { if(n == 1) { return 1; } else if(n == 2) { return n*calcola(n-1); } else { return n*calcola(n-1)*calcola(n-2); } }Quale valore restituisce se viene richiamata con parametro 5?
Risposte:
- 120
- 1400
- 414720
- nessuna delle precedenti
Soluzione: d (nessuna delle precedenti, 1440)
Osserva
- calcola(1) = 1
- calcola(2) = 2*calcola(1) = 2*1 = 2
- calcola(3) = 3*calcola(2)*calcola(1) = 3*2*1 = 6
- calcola(4) = 4*calcola(3)*calcola(2) = 4*6*2 = 48
- calcola(5) = 5*calcola(4)*calcola(3) = 5*48*6 = 1440
Oppure
calcola(5) = 5*calcola(4)*calcola(3)
- 5*(4*calcola(3)*calcola(2))*(3*calcola(2)*calcola(1))
- 5*(4*(3*calcola(2)*calcola(1))*(2*calcola(1)))*(3*(2*calcola(1))*1)
- 5*(4*(3*(2*calcola(1))*1)*(2*1))*(3*(2*1)*1)
- 5*(4*(3*(2*1)*1)*(2*1))*(3*(2*1)*1)
- 1440