Faktoriál
Faktoriál je funkcia, ktorá priradí každému kladnému celému číslu x také číslo, ktoré sa rovná súčinu všetkých čísel menších alebo rovných x.
Napríklad teda: 5! = 5 * 4 * 3 * 2 * 1 = 120
Faktoriál má jeden špeciálny prípad, s ktorým musíme počítať, a to: 0! = 1
Samotný algoritmus je veľmi jednoduchý a možno ho napísať s rekurzia či bez rekurzia.
Ako prvý si uvedieme verziu bez rekurzia.
Do premennej s výsledkom si dosadíme číslo 1. Výpočet vykonáme
jednoducho cyklom od 2 do x, pričom v každom kroku výsledok pronásobíme
hodnotou premennej cyklu. Cyklus by mohol bežať aj od 1 do x, ale násobiť
niečo jednotkou nedáva úplne zmysel Tiež by mohol bežať pospiatky, ako je faktoriál definovaný
vyššie, ale popredu je to prirodzenejšie a pri násobenie nezáleží na
poradí čísel. Keď sa zamyslíte, ľahko uhádnete, že tento postup bude
fungovať aj pre x = 0, pretože na začiatku sa do výsledku dosadí jednotka a
cyklus sa potom už nevykoná.
Poznámka: Jedná sa o veľmi rýchlo rastúci funkciu, teda si dávajte pozor na výpočet faktoriálov vysokých čísel. (5! = 120, ale 10! Je už v poriadku miliónov). Je teda potrebné rozmyslieť si výber dátového typu podľa hodnôt, ktoré bude funkcia spracovávať.
Funkcia tiež musí byť obmedzená len pre kladné čísla vrátane nuly, pretože sa záporným argumentom nemá zmysel. Je veľmi vhodné funkciu faktoriál obmedziť na nejakú maximálnu hodnotu (tu 10), aby výpočet nezasekol program alebo nezavinil výnimku pretečeniu pamäte. Ak budete chcieť počítať vyšší Faktoriál, je to s týmto algoritmom samozrejme možné, len budete potrebovať nejakú knižnicu, ktorá umožní prácu s veľkými číslami.
Zdrojový kód - bez rekurzia
Rekurzívne faktoriál naprogramujeme tak, že budeme vždy vracať parameter x a tým vynásobený výsledok funkcie s parametrom o jednu menšiu. Keď si rozmyslíme, kedy by sa mala rekurzia zastaviť, dospejeme k podmienke x = 1. Ak budeme chcieť, aby nám funkcie správe počítala aj 0 !, bude podmienka (x <2).
Zdrojový kód - s rekurziu
V ďalšej lekcii, Matice a základné operácie s nimi, nielen v kóde , sa zoznámime s pojmom matice a naučíme sa základné matematické operácie, ktoré na ne možno aplikovať.