Silnia

kategoria: Zadania z programowania

Silnia (oznaczana jako n!) jest to iloczyn kolejnych liczb naturalnych od 1 do n. Jest to pojęcie czysto matematyczne, jednak często spotykane w zadaniach informatycznych oraz na maturze. Obliczanie silni można wykonać na wiele sposób. Przy zadaniach z silnią należy zwrócić uwagę na optymalizację. Źle napisany program nie będzie wydajny i będzie miał dużą złożoność czasową.

Kod w C++ (iteracyjny)

W podejściu iteracyjnym tworzymy pętle, która mnoży licznik przez samego siebie tyle razy, ile użytkownik wpisze z klawiatury:

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    int liczba;
    long long silnia = 1;

    cout << "podaj liczbe" << endl;
    cin >> liczba;

    for (int i = 1; i<=liczba;i++)
    {
        silnia *= i;
    }

    cout << silnia << endl;

    system("PAUSE");
    return(0);
}

Kod w C++ (rekurencyjny)

W podejściu rekurencyjnym potrzebna jest dodatkowa funkcja, która będzie rekurencyjnie wywoływać samą siebie. Z każdym wywołaniem funkcji pomniejszamy argument. Momentem zatrzymania wykonania programu jest sytuacja, gdy przekazany argument jest równy 1.

#include <iostream>
#include <cstdlib>

using namespace std;

int silnia (int liczba)
{
    if (liczba < 2) 
    {
        return liczba;
    }
    return liczba * silnia(liczba - 1);
}

int main()
{
    int liczba;

    cout << "podaj liczbe" << endl;
    cin >> liczba;

    cout << silnia(liczba) << endl;

    system("PAUSE");
    return(0);
}