[[lecos]]
 
#include <iostream>
using namespace std;
 
int fakt (int n)
{
    int v = 1;
    for (int i = 1; i <= n; i++)
    {
        v = v * i;
    }
    return v;
}
 
int komb (int n, int k)
{
 
    return fakt(n) / (  fakt(n - k) * fakt(k)  );
}
 
#include <iomanip> 
 
int main()
{
    for (int n = 0; n <= 10; n++)
    {
        for (int k = 0; k <= n; k++)
        {
            cout << setw (3) << komb(n, k) << setw (1) << " ";
        }
        cout << endl;
    }
    cout << "O.K." << endl;
}
#include <iostream>
#include <iomanip> 
using namespace std;
 
int fakt (int n)
{
    if (n <= 1)
    {
        return 1;
    }
    else
    {
        return n * fakt(n - 1);
    }
}
 
int komb0(int n, int k)
{
    return fakt(n) / (fakt(n - k) * fakt(k));
}
 
int komb(int n, int k)
{
    int v = 1;
    if (k > n / 2)
    {
        k = n - k;
    }
    for (int i = n; i > n - k; i--)
    {
        v = v * i;
    }
    for (int i = k; i > 1; i--)
    {
        v = v / i;
    }
    return v;
}
 
const int N = 20;
int p [N];
 
int faktorial(int n)
{
    int v = 0;
    if (n >= 0 && n < N)
    {
        v = p[n]; // vyzvednou z tabulky
        if (v == 0) // pokud nebylo dosud vypocitano 
        {
            int k = n;
            while (k>=0 && p[k] == 0) 
            {
                k--;
            }
            // k == -1 || k>=0 && p[k] != 0
            if (k == -1) // neznam ani 0!
            {
                p[0] = 1; // znam 0!
                k++;
            }
            while (k < n)
            {
                // p[k] obsahuje predpocitanou hodnotu
                p[k + 1] = (k + 1) * p[k];
                k++;
            }
            // p[n] obsahuje predpocitanou hodnotu
            v = p[n]; // vysledek
        }
    }
    return v;
}
 
int main()
{
    for (int i = 0; i < N; i++)
    {
        p[i] = 0; // p[i] == 0 ... nezname  i!
    }
 
    for (int i = 1; i <= 5; i++)
    {
        cout << i << " " << faktorial(i) << endl;
    }
 
    for (int i = 13; i >= -1; i--)
    {
        cout << i << " " << faktorial(i) << endl;
    }
 
    /*
 
    for (int n = 0; n <= 10; n++)
    {
        for (int k = 0; k <= n; k++)
        {
            cout << setw (3) << komb(n, k) << setw (1) << " ";
        }
        cout << endl;
    }
    */
    cout << "O.K." << endl;
}
 
lecos.txt · Last modified: 2019/10/03 15:08 by 147.32.8.115
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki