Si consideri la seguente funzione A().
int B(int n); int A(int n) { if(n > 1) return n*B(n+1); else return 1; } int B(int n) { if(n > 1) return (n-1)*A(n-2); else return 1; }Indicare quali sono i valori restituiti dalle invocazioni A(1), A(2), A(3), A(4), A(5).
Risposte:
- 1, 4, 24, 192, 1920
- 1, 4, 36, 576, 14400
- 1, 4, 16, 256, 65536
- nessuna delle precedenti
Soluzione: b
Compila la tabella
n | A(n) | B(n) |
0 | 1 | |
1 | 1 | |
2 | 2*B(3) = 2*2 = 4 | |
3 | 3*B(4) = 3*12 = 36 | 2*A(1) = 2*1 = 2 |
4 | 4*B(5) = 4*144 = 576 | 3*A(2) = 3*4 = 12 |
5 | 5*B(6) = 5*2880 = 14400 | 4*A(3) = 4*36 = 144 |
6 | 5*A(4) = 5*576 = 2880 |
Osserva l’alternativa
A(5) = 5*B(6) = 5*5*A(4) = 25*4*B(5) = 100*4*A(3) = 400*3*B(4) = 1200*3*A(2) = 3600*2*B(3) = 7200*2*A(1) = 14400*1 = 14400