Considerate le seguenti sei funzioni, con argomento N (un intero non negativo).
Ciascuna di esse calcola un qualche valore scelto tra: N, 2N , N2, N3, 2N, N!, NN.
Dovete stabilire qual è il valore calcolato da ogni funzione.Note
- potrebbero esserci doppioni: più funzioni potrebbero calcolare lo stesso valore;
- N!=1x2x3….xN; quindi 3!=6 e 5!=120;
- si assume che 0!=1.
int A(int N) { if(N > 0) return A(N-1)+A(N-1); else return 1; }int B(int N) { if(N > 0) return B(N-1)+2*N-1; else return 0; }int C(int N) { int i, R; R=1; for(i=0; i < N; i++) R=R+R; return R; }int D(int N) { int i, R; R=1; for(i=1; i <= N; i++) R=R*i; return R; }int E(int N) { int i, R; R=0; for(i=0; i < N; i++) R=R+N; return R; }int F(int N) { if(N > 1) return N*F(N - 1); else return 1; }
Soluzione: 2n, n2, 2n, n!, n2, n!.
Compila la tabella
n | A(n) | B(n) | C(n) | D(n) | E(n) | F(n) |
0 | 1 | 0 | 1 | 1 | 0 | 1 |
1 | A(0)+A(0) 1+1 2 |
B(0)+2*1-1 0+2-1 1 |
1+1 2 |
1*1 1 |
0+1 1 |
1 |
2 | A(1)+A(1) 2+2 4 |
B(1)+2*2-1 1+4-1 4 |
1+1 2+2 4 |
1*1 1*2 2 |
0+2 2+2 4 |
2*F(1) 2*1 2 |
3 | A(2)+A(2) 4+4 8 |
B(2)+2*3-1 4+6-1 9 |
1+1 2+2 4+4 8 |
1*1 1*2 2*3 6 |
0+3 3+3 6+3 9 |
3*F(2) 3*2 6 |
4 | A(3)+A(3) 8+8 16 |
B(3)+2*4-1 9+8-1 16 |
1+1 2+2 4+4 8+8 16 |
1*1 1*2 2*3 6*4 24 |
0+4 4+4 8+4 12+4 16 |
4*F(3) 4*6 24 |
5 | A(4)+A(4) 16+16 32 |
B(4)+2*5-1 16+10-1 25 |
1+1 2+2 4+4 8+8 16+16 32 |
1*1 1*2 2*3 6*4 24*5 120 |
0+5 5+5 10+5 15+5 20+5 25 |
5*F(4) 5*24 120 |
... | ... | ... | ... | ... | ... | ... |
n | 2n | n2 | 2n | n! | n2 | n! |