Skaičių faktorialas yra svarbi matematinė sąvoka. Jį galite naudoti permutacijai ir deriniams atlikti, eksponentinėms ir logaritminėms išraiškoms rašyti ir tikimybei apskaičiuoti.
Naudojate jį norėdami rasti daugybę skirtingų būdų, kaip suplanuoti sėdimų vietų išdėstymą arba pasirinkti marškinėlius atostogoms Maldyvuose. Bet kaip jūs galite apskaičiuoti skaičiaus faktorialą?
Kas yra skaičiaus faktorius?
Teigiamo skaičiaus faktorialas yra visų teigiamų sveikųjų skaičių sandauga, mažesnė už paties skaičiaus reikšmę arba jai lygi. Skaičius, po kurio yra šauktukas(!), reiškia skaičiaus faktorialą. Jūs atstovaujate penkių faktorialą kaip 5! ir apskaičiuokite taip:
5! = 5 * 4 * 3 * 2 * 1 = 120
Kitas būdas vizualizuoti yra:
5! = 5 * 4! kur 4! = 4 * 3!, 3! = 3 * 2! ir taip toliau, kol gausite 1! = 1 * 0! kuris yra 1.
Šią koncepciją naudosite kurdami faktorinę programą naudodami populiarią koncepciją, vadinamą rekursija.
Kas yra Rekursija?
Rekursija yra procesas, kurio metu funkcija išsikviečia save. Vienas iš pagrindinių šio proceso privalumų yra tai, kad jis suskaido didesnę problemą į mažesnius gabalus. Taip problemą lengviau išspręsti.
Norėdami išspręsti atitinkamas problemas, atlikdami tris paprastus veiksmus, galite naudoti rekursiją:
- Raskite pagrindinį atvejį: Jei funkcija visada iškviečia save, procesas bus begalinis. Kad taip nenutiktų, apibrėžkite bazinį atvejį, kuris tampa loginiu jūsų funkcijos stabdymo tašku. Pavyzdžiui, faktorininėje programoje sustabdykite skaičiavimą ties nuliu. Tai tampa pagrindiniu problemos atveju.
- Raskite ryšį tarp problemos ir subproblemų: Didesnę problemą suskaidykite į subproblemą. Pavyzdžiui, problema yra rasti faktorialą iš penkių. Tarkime, kad turite keturių faktorių atsakymą, tai yra 24. Kaip gauti faktorialą iš penkių naudojant 24? Padauginus į jį patį penkis. Tai yra problemos ir subproblemos santykis.
- Apibendrinkite ryšį, rastą 2 veiksme: Dabar, kai turite ryšį, apibendrinkite jį n. Taigi, skaičiaus n faktorialas yra n ir n-1 faktorialas.
Galite naudoti šią koncepciją raskite n natūraliųjų skaičių sumą, apskaičiuokite GCD, LCM, Fibonačio eilutes ir patikrinkite pirminius skaičius.
Faktorinės funkcijos pseudo kodas naudojant rekursiją
Tai yra kaip naudojate rekursiją ir parašykite pseudo kodą, kad sukurtumėte programą bet kuria kalba. Naudojant skirtingas kalbas, sintaksė ir vykdymas keičiasi, tačiau logika išlieka nepakitusi.
funkcijaFaktas(n)
Jei n == 0 tada // bazinis atvejis
Grįžti1
Grįžti n * skambučio faktas (n - 1) // apibendrintas santykis
Factorial programa C
C buvo pirmoji aukšto lygio, nuo platformos nepriklausoma programavimo kalba. Jis turi griežtą sintaksę, yra jautrus didžiosioms ir mažosioms raidėms ir vykdo kodą greičiausiai. Tai yra procedūrinė programavimo kalba, todėl jūs deklaruojate bet kokią funkciją pagrindinis funkcija. Štai kaip galite sukurti faktorių programą naudodami rekursiją C kalba:
Čia galite rasti visą faktorialinės programos šaltinio kodą naudodami rekursiją C, Java ir Python GitHub saugykla.
- Importuokite standartinės įvesties išvesties antraštės failą, kad išvestis būtų rodoma ekrane.
#įtraukti <stdio.h>
- Apibrėžkite funkciją faktas ir paimkite sveikąjį skaičių n kaip argumentas.
tarptfaktas(tarpt n){
- Parašykite pagrindinės funkcijos raidę naudodami jeigu teiginį ir patikrinkite jo lygybę naudodami ==. Jei n lygus nuliui, grąžinkite vienetą.
jei (n == 0)
grąžinti1; - Parašykite apibendrintą lygtį ir grąžinkite sandaugą n su funkcijos iškvietimu antrinės problemos n-1.
grąžinti n * faktas (n - 1);
} - Deklaruokite pagrindinę funkciją ir inicijuokite sveikojo skaičiaus kintamąjį, kad išsaugotumėte skaičių, kurio faktorialą norite rasti.
tarptpagrindinis(){
tarpt skaičius = 5; - Parodykite skaičiaus koeficientą naudodami printf() funkcija. %d yra dešimtainio formato specifikacija. Naudokite kiekvieną formato specifikatorių, kad pakeistumėte jį skaičiumi, kurio faktorialą norite rasti, ir gaukite rezultatą iškviesdami funkciją.
printf("%d faktorius yra %d", skaičius, faktas (skaičius));
grąžinti0;
}
Factorial programa Java
Java yra sukompiliuota programavimo kalba ir nepriklauso nuo platformos. Visą kodą saugote a viduje klasė o vykdymas prasideda nuo pagrindinis funkcija. Skiriamos didžiosios ir mažosios raidės ir griežta sintaksė. Kodas yra šiek tiek ilgesnis, bet greitesnis, palyginti su Python. Štai kaip galite sukurti faktorių programą naudodami rekursiją „Java“:
- Apibrėžkite pagrindinę klasę.
klasėPagrindinis{
- Apibrėžkite statinę funkciją su grąžos tipu int, kuri priima sveikojo skaičiaus kintamąjį n. Jūs paskelbėte statinį metodą, nes pagrindinis Java metodas taip pat deklaruojamas kaip statinis. Be to, negalite iškviesti nestatinio metodo iš statinio egzemplioriaus.
statinistarptfaktas(tarpt n){
- Parašykite pagrindinės funkcijos raidę naudodami jeigu teiginį ir patikrinkite jo lygybę naudodami ==. Jei n lygus nuliui, grąžinkite vienetą.
jei (n == 0)
grąžinti1; - Parašykite apibendrintą lygtį ir grąžinkite sandaugą n su funkcijos iškvietimu antrinės problemos n-1.
grąžinti n * faktas (n - 1);
} - Deklaruokite pagrindinę funkciją Java. Paskelbkite prieigos modifikatorių kaip viešas, todėl jį galima pasiekti naudojant visas kitas klases ir metodus. Pagrindinę funkciją deklaruojate kaip statinis kad kompiliatorius galėtų jį iškviesti nesukurdamas klasės. Grąžinimo tipas yra tuštuma, ir jis priima tipo argumentus Styga. Išsaugokite numerį, kurio faktorialą norite rasti.
viešasstatinistuštumapagrindinis(String[] args){
tarpt skaičius = 5; - Naudoti println () metodas, pavyzdys PrintStream klasė, apibrėžta Sistema klasę, kad būtų rodomas skaičiaus faktorius.
System.out.println("Faktinis iš " + skaičius + " yra " + faktas (skaičius));
}
}
Factorial programa Python
Rašyti kodą Python yra labai lengva ir smagu. Kadangi tai yra interpretuojama nuo platformos nepriklausoma kalba, jums nereikia deklaruoti kintamųjų duomenų tipo. Taip pat išvengsite tokios paprastos programos klasių deklaravimo ir bibliotekų importavimo. Žaidimų aikštelė paruošta, kad galėtumėte pradėti koduoti.
Sintaksė yra paprastesnė, naudojant mažą kodo ilgį, tačiau paleisti užtrunka šiek tiek daugiau laiko nei kitomis kalbomis. Štai kaip galite sukurti faktorių programą naudodami rekursiją Python:
- Apibrėžkite funkcijos faktą, kuris priimamas kaip argumentas n.
deffaktas(n):
- Parašykite pagrindinės funkcijos raidę naudodami jeigu teiginį ir patikrinkite jo lygybę naudodami ==. Jei n lygus nuliui, grąžinkite vienetą.
jei n == 0:
grąžinti1 - Parašykite apibendrintą lygtį ir grąžinkite sandaugą n su funkcijos iškvietimu antrinės problemos n-1.
grąžinti n * faktas (n-1)
- Išsaugokite numerį, kurio faktorialą norite rasti, ir parodykite jį naudodami spausdinimo teiginį.
skaičius = 5;
spausdinti ("Faktinis iš", skaičius, "yra", faktas (skaičius))
Yra daug rekursijos programų
Rekursija yra efektyvus problemų sprendimo būdas. Tai yra dirbtinio intelekto esmė ir realiame pasaulyje naudojamas galvosūkių žaidimuose, tokiuose kaip šachmatai ar Sudoku.
Tai taip pat galingas duomenų struktūrų, pvz., medžio, arba rūšiavimo algoritmų, pvz., greito rūšiavimo ir sujungimo rūšiavimo, metodas. Taip pat galite naudoti rekursiją ieškodami algoritmų, tokių kaip dvejetainė paieška, matematinėse išraiškose, pvz., Fibonačio serijoje ir kt.