22 kwietnia 2005 19:15Obliczanie silniPaweł Gniadkowski [Kardon] Silnia danej liczby to iloczyn wszystkich liczb naturalnych nie większych od tej liczby. Przykładowo: 5! = 5*4*3*2*1Możemy jednak przedstawić silnię liczby n jako iloczyn liczby n oraz (n-1)!. Z kolei liczbę (n-1)! mozemy przedstawić jako (n-1)*(n-2)!. Tak samo możemy rozbijać kolejne liczby naturalne, aż dojdziemy do jedynki. Jak wiemy 1!=1. Tak więc:4! = 4*3! = 4*3*2! = 4*3*2*1! = 4*3*2*1 = 24
Algorytm obliczania silni danej liczby jest bardzo prosty. Tworzymy funkcję silnia. Jej parameterm będzie liczba (np. n), której silnię chcemy obliczyć. Funkcja w pierwszej kolejności sprwdzi, czy n nie jest równe 1 - jeśli tak, to od razu zwróci wynik 1 (ponieważ 1! = 1). Jeśli liczba n okaże się być większą od 1 funkcja zwróci wartość równą n*silnia(n-1). Zostanie wtedy wykonana rekurencyjnie funkcja silnia (z parametrem o jeden mniejszym). Funkcja będzie wykonywać samą siebie do czasu, kiedy parametr wyniesie 1.
Implementacja algorytmu w języku C++ wyglada następująco: #include <iostream>
using namespace std;
int silnia(int n)
{
switch (n)
{
case 1:
return 1;
break;
default:
return n * silnia(n-1);
}
}
int main()
{
int wej;
cout << "Silnie jakiej liczby obliczyc?\n";
cin >> wej;
cout << silnia(wej);
}