Výpočet faktoriáluFaktoriál je funkce, která přiřadí každému kladnému celému číslu n takové číslo, které se rovná součinu všech čísel menších nebo rovných n.
Například tedy: 5! = 5 * 4 * 3 * 2 * 1 = 120
Faktoriál má jeden speciální případ, se kterým musíme počítat, a to: 0! = 1
Jedná se o velmi rychle rostoucí funkci, tudíž si dávejte pozor na výpočet faktoriálů vysokých čísel. (5! = 120, ale 10! je již v řádu milionů). Je tedy třeba rozmyslet si výběr datového typu podle hodnot, které bude funkce zpracovávat.
Funkce také musí být omezena jen pro kladná čísla včetně nuly, protože se záporným argumentem nemá smysl. Je velmi vhodné funkci faktoriál omezit na nějakou maximální hodnotu (zde 30), aby výpočet nezasekl program nebo nezavinil výjimku přetečení paměti.
Zdrojový kód [C#]:
public double Faktorial(int x) // výpočet faktoriálu
{
if (x > 30 || x < 0)
MessageBox.Show("Faktoriál je příliš paměťově náročný nebo ze záporného čísla.", "Chyba",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
int i;
int j = 1;
for (i = 1; i <= x; i++)
j = j * i;
return j;
}
Faktoriál lze počítat také rekurzivně.
Faktorial rekurzivní metodou [Pascal]
function faktorial(n:integer):longint;
if N<2 then
faktorial:=1
else
faktorial:=n*faktorial(n-1);
end;
Zpět na hlavní stránku
Vaše komentáře:
Zatím nikdo nevložil komentář - buď první!
| |
Přidat novou zprávu:
|