language: C (gcc-4.7.2)
date: 203 days 11 hours ago
link:
visibility: private
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
 
long silnia(int a)
{
    int i;
    long s = 1;
    if (a > 1)
    {
        for (i = 1; i <= a; i++)
        {
            s *= i;
        }
    }
    return s;
}
 
long newton(int n, int k)
{
    return silnia(n)/(silnia(k)*silnia(n-k));
}
 
unsigned long int newton_rek(long int n ,long int k)
{
    if ( n == k || k == 0 )
    {
        return 1;
    }
 
    if (k > n)
    {
        return 0;
    }
 
    else return newton_rek(n-1,k-1) + newton_rek(n-1,k);
}
 
int main(void) {
    const long nmax = 12;
    long n, k;
    unsigned long x;
 
    printf( "newton_rek:\n");
    for( n = 0; n < nmax; n++ ) {
        for( k = 0; k <= n; k++ ) {
            x = newton_rek(n,k);
            printf( "%u ", x );
        }
        printf( "\n" );
    }
    
    printf( "\nnewton:\n");
    for( n = 0; n < nmax; n++ ) {
        for( k = 0; k <= n; k++ ) {
            x = (unsigned long)newton(n,k);
            printf( "%u ", x );
        }
        printf( "\n" );
    }
 
return 0;
}