Silnia
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);
}