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!Dovete stabilire qual è il valore calcolato da ogni funzione (potrebbero esserci doppioni: più funzioni potrebbero calcolare lo stesso valore; notate inoltre che N! denota il fattoriale di N ed è definito come N! = 1x2x3….xN; quindi 2!=2, 3!=6 e 5!=120; inoltre si assume che 0!=1).
int A(int N) { if(N > 0) return 2*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; }
Soluzione
- A: 2N
- B: N2
- C: 2N
- D: N!
Osserva
0 1 2 3 4 5 A(): 1 2 4 8 16 32 B(): 0 1 4 9 16 25 C(): 0 2 4 8 16 32 D(): 1 1 2 6 24 120
In particolare
- A(5) = 2*A(4) = 2*2*A(3) = 2*2*2*A(2) = 2*2*2*2*A(1) = 2*2*2*2*2*A(0) = 2*2*2*2*2*1 = 32
- B(5) = B(4) +2*5-1 = B(3)+2*4-1+9 = B(2)+2*3-1+7+9 = B(1)+2*2-1+5+7+9 = B(0)+2*1-1+3+5+7+9 = 0+1+3+5+7+9 = 25
- C(5) =
- 2*1 = 2
- 2*2 = 4
- 2*4 = 8
- 2*8 = 16
- 2*16 = 32
- D(5) =
- 1*1 = 1
- 2*1 = 2
- 3*2 = 6
- 4*6 = 24
- 5*24 = 120