2002 – 7

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!