Faktoriál čísla je důležitý matematický koncept. Můžete jej použít k provádění permutací a kombinací, psaní exponenciálních a logaritmických výrazů a výpočtu pravděpodobnosti.
Pomocí něj zjistíte množství různých způsobů, jak můžete navrhnout uspořádání sedadel nebo si vybrat trička na dovolenou na Maledivy. Ale jak můžete vypočítat faktoriál čísla?
Co je faktoriál čísla?
Faktoriál kladného čísla je součin všech kladných celých čísel menších nebo rovných hodnotě samotného čísla. Číslo následované vykřičníkem(!) označuje faktoriál čísla. Představujete faktoriál pěti jako 5! a vypočítej to jako:
5! = 5 * 4 * 3 * 2 * 1 = 120
Další způsob, jak si to představit, je:
5! = 5 * 4! kde 4! = 4 * 3!, 3! = 3 * 2! a tak dále, dokud nezískáte 1! = 1 * 0! což je 1.
Tento koncept použijete k sestavení našeho faktoriálního programu pomocí oblíbeného konceptu zvaného rekurze.
Co je rekurze?
Rekurze je proces, ve kterém funkce volá sama sebe. Jednou z hlavních výhod tohoto procesu je, že rozdělí větší problém na menší kousky. To usnadňuje řešení problému.
Rekurzi můžete použít k vyřešení příslušných problémů ve třech snadných krocích:
- Najděte základní případ: Pokud funkce vždy volá sama sebe, proces bude nekonečný. Abyste tomu zabránili, definujte základní případ, který se stane logickým bodem zastavení vaší funkce. Například ve faktoriálovém programu zastavte výpočet na nule. To se stává základním případem problému.
- Najděte vztah mezi problémem a podproblémy: Rozdělte větší problém na podproblém. Problém je například najít faktoriál pětky. Předpokládejme, že máte odpověď faktoriálu čtyři, tedy 24. Jak získáte faktoriál pět pomocí 24? Tím, že se do něj vynásobí pěti. Toto je vztah mezi problémem a podproblémem.
- Zobecněte vztah nalezený v kroku 2: Nyní, když máte vztah, zobecněte jej z hlediska n. Faktoriál čísla n je tedy součinem n a faktoriálem n-1.
Tento koncept můžete použít najít součet n přirozených čísel, vypočítat GCD, LCM, Fibonacciho řadu a zkontrolovat prvočísla.
Pseudokód pro faktoriální funkci pomocí rekurze
Tohle je jak používáte rekurzi a napište pseudo kód pro vytvoření vašeho programu v libovolném jazyce. U různých jazyků se syntaxe a provádění mění, ale logika zůstává nedotčena.
funkceSkutečnost(n)
Pokud n == 0 pak // základní případ
Vrátit se1
Vrátit se n * Fakta o volání (n - 1) // zobecněný vztah
Faktorový program v C
C byl první programovací jazyk na vysoké úrovni, nezávislý na platformě. Má přísnou syntaxi, rozlišuje velká a malá písmena a spouští kód nejvyšší rychlostí. Je to procedurální programovací jazyk, a proto deklarujete jakoukoli funkci nad rámec hlavní funkce. Zde je návod, jak můžete vytvořit faktoriální program pomocí rekurze v jazyce C:
Celý zdrojový kód faktoriálního programu pomocí rekurze v C, Javě a Pythonu najdete v tomto úložiště GitHub.
- Importujte standardní vstupní výstupní soubor záhlaví pro zobrazení výstupu na obrazovku.
#zahrnout <stdio.h>
- Definujte funkci skutečnost a vzít celé číslo n jako argument.
intskutečnost(int n){
- Napište základní případ funkce pomocí -li a zkontrolujte jeho rovnost pomocí ==. Pokud se n rovná nule, vraťte jedničku.
if (n == 0)
vrátit se1; - Napište zobecněnou rovnici a vraťte součin n s voláním funkce podproblém n-1.
vrátit se n * fakt (n - 1);
} - Deklarujte funkci main a inicializujte proměnnou celočíselného typu pro uložení čísla, jehož faktoriál chcete najít.
inthlavní(){
int číslo = 5; - Zobrazte faktoriál čísla pomocí printf() funkce. %d je specifikátor desetinného formátu. Pomocí každého ze specifikátorů formátu jej nahraďte číslem, jehož faktoriál chcete najít, a získáte výsledek voláním funkce.
printf("Faktorial %d je %d", num, fakt (num));
vrátit se0;
}
Faktorový program v Javě
Java je kompilovaný programovací jazyk a je nezávislý na platformě. Celý kód uložíte uvnitř a třída a provádění začíná od hlavní funkce. Rozlišuje velká a malá písmena a syntaxe je striktní. Kód je o něco delší, ale rychlejší ve srovnání s Pythonem. Zde je návod, jak můžete vytvořit faktoriální program pomocí rekurze v Javě:
- Definujte hlavní třídu.
třídaHlavní{
- Definujte statickou funkci s návratovým typem int, která přijímá proměnnou n celočíselného typu. Deklarovali jste statickou metodu jako hlavní metodu v Javě je také deklarována jako statická. Navíc nemůžete volat nestatickou metodu ze statické instance.
statickýintskutečnost(int n){
- Napište základní případ funkce pomocí -li a zkontrolujte jeho rovnost pomocí ==. Pokud se n rovná nule, vraťte jedničku.
if (n == 0)
vrátit se1; - Napište zobecněnou rovnici a vraťte součin n s voláním funkce podproblém n-1.
vrátit se n * fakt (n - 1);
} - Deklarujte hlavní funkci v Javě. Deklarujte modifikátor přístupu jako veřejnost, takže může být přístupný všem ostatním třídám a metodám. Hlavní funkci deklarujete jako statický aby jej kompilátor mohl vyvolat bez vytváření instance třídy. Návratový typ je prázdno, a přijímá argumenty typu Tětiva. Uložte číslo, jehož faktoriál chcete najít.
veřejnoststatickýprázdnotahlavní(Řetězec[] argumentů){
int číslo = 5; - Použijte println() metoda, instance the PrintStream třídy, definované v Systém třídy pro zobrazení faktoriálu čísla.
System.out.println("Faktor z " + číslo + " je " + fakt (num));
}
}
Faktorový program v Pythonu
Psaní kódu v Pythonu je super snadné a zábavné. Protože se jedná o interpretovaný jazyk nezávislý na platformě, nemusíte deklarovat datový typ proměnných. Také se vyhnete nutnosti deklarovat třídy a importovat knihovny pro tak jednoduchý program. Hřiště je připraveno, abyste mohli začít kódovat.
Syntaxe je jednodušší, s malou délkou kódu, ale její provedení trvá o něco déle než u ostatních jazyků. Zde je návod, jak můžete vytvořit faktoriální program pomocí rekurze v Pythonu:
- Definujte fakt funkce, kterou akceptujete jako argument n.
defskutečnost(n):
- Napište základní případ funkce pomocí -li a zkontrolujte jeho rovnost pomocí ==. Pokud se n rovná nule, vraťte jedničku.
pokud n == 0:
vrátit se1 - Napište zobecněnou rovnici a vraťte součin n s voláním funkce podproblém n-1.
vrátit se n * skutečnost (č-1)
- Uložte číslo, jehož faktoriál chcete najít, a zobrazte jej pomocí tiskového výpisu.
číslo = 5;
tisk("Faktor z", num, "je", fakt (num))
Existuje mnoho aplikací rekurze
Rekurze je efektivní způsob řešení problémů. Je to jádro umělé inteligence a má skutečné využití v logických hrách, jako jsou šachy nebo sudoku.
Je to také výkonná metoda pro třídění datových struktur, jako je strom nebo třídicí algoritmy, jako je rychlé řazení a řazení sloučení. Můžete také použít rekurzi v vyhledávacích algoritmech, jako je binární vyhledávání, matematické výrazy, jako je Fibonacciho řada a další.