Lukujen faktoraali on tärkeä matemaattinen käsite. Voit käyttää sitä permutaatioiden ja yhdistelmien suorittamiseen, eksponentiaalisten ja logaritmien lausekkeiden kirjoittamiseen ja todennäköisyyden laskemiseen.

Sen avulla voit löytää useita erilaisia ​​tapoja suunnitella istumajärjestystä tai valita t-paitoja lomallesi Malediiveille. Mutta kuinka voit laskea luvun kertoimen?

Mikä on luvun tekijä?

Positiivisen luvun tekijä on kaikkien positiivisten kokonaislukujen tulo, jotka ovat pienempiä tai yhtä suuria kuin itse luvun arvo. Numero, jota seuraa huutomerkki(!) tarkoittaa luvun tekijää. Edustat viiden tekijää 5:nä! ja laske se seuraavasti:

5! = 5 * 4 * 3 * 2 * 1 = 120

Toinen tapa visualisoida se on:

5! = 5 * 4! missä 4! = 4 * 3!, 3! = 3 * 2! ja niin edelleen, kunnes saat 1! = 1 * 0! joka on 1.

Käytät tätä konseptia rakentaaksesi tekijäohjelmamme käyttämällä suosittua konseptia nimeltä rekursio.

Mikä on rekursio?

Rekursio on prosessi, jossa funktio kutsuu itseään. Yksi tämän prosessin tärkeimmistä eduista on, että se hajottaa suuremman ongelman pienemmiksi paloiksi. Tämä helpottaa ongelman ratkaisemista.

Voit käyttää rekursiota sopivien ongelmien ratkaisemiseen kolmessa helpossa vaiheessa:

  1. Etsi perustapaus: Jos funktio kutsuu aina itseään, prosessi on ääretön. Jotta näin ei tapahdu, määritä perustapaus, josta tulee funktiosi looginen lopetuskohta. Esimerkiksi tekijäohjelmassa laskenta pysäytetään nollaan. Tästä tulee ongelman perustapaus.
  2. Etsi suhde ongelman ja osaongelmien välillä: Jaa isompi ongelma aliongelmaksi. Ongelmana on esimerkiksi viiden kertoimen löytäminen. Oletetaan, että sinulla on neljän faktoriaalin vastaus, eli 24. Kuinka saat viidennen faktoriaalin käyttämällä 24:ää? Kertomalla itse viisi siihen. Tämä on ongelman ja aliongelman välinen suhde.
  3. Yleistä vaiheessa 2 löydetty suhde: Nyt kun sinulla on relaatio, yleistä se n: n suhteen. Joten luvun n faktoriaali on n: n ja n-1:n faktoraali.

Voit käyttää tätä käsitettä etsi n luonnollisen luvun summa, laske GCD, LCM, Fibonacci-sarja ja tarkista alkuluvut.

Pseudokoodi rekursiofunktiolle

Tämä on kuinka käytät rekursiota ja kirjoita pseudokoodi ohjelman rakentamiseksi millä tahansa kielellä. Eri kielillä syntaksi ja suoritus muuttuvat, mutta logiikka pysyy ennallaan.

toimintoFakta(n)
Jos n == 0 sitten // perustapaus
Palata1
Palata n * Soittotieto (n - 1) // yleistetty suhde

Factorial-ohjelma kielellä C

C oli ensimmäinen korkean tason, alustasta riippumaton ohjelmointikieli. Sillä on tiukka syntaksi, kirjainkoolla on merkitystä ja se suorittaa koodin nopeimmalla nopeudella. Se on proseduuriohjelmointikieli, ja siksi ilmoitat minkä tahansa toiminnon ohjelman päälle pää toiminto. Näin voit rakentaa tekijäohjelman rekursiolla C-kielellä:

Löydät rekursiota käyttävän faktoriohjelman koko lähdekoodin C: ssä, Javassa ja Pythonissa tästä GitHub-arkisto.

  1. Tuo vakiotulon otsikkotiedosto tulosteen näyttämiseksi näytöllä.
    #sisältää <stdio.h>
  2. Määritä toiminto tosiasia ja ota kokonaisluku n argumenttina.
    inttosiasia(int n){
  3. Kirjoita funktion perustapaus käyttämällä jos lauseke ja tarkista sen tasa-arvo käyttämällä ==. Jos n on nolla, palauta yksi.
     jos (n == 0)
    palata1;
  4. Kirjoita yleinen yhtälö ja palauta tuotteen tulo n alitehtävän funktiokutsulla n-1.
    palata n * tosiasia (n - 1);
    }
  5. Ilmoita pääfunktio ja alusta kokonaislukutyyppinen muuttuja tallentaaksesi luvun, jonka kertoimen haluat löytää.
    intpää(){
    int numero = 5;
  6. Näytä numeron kertolasku käyttämällä printf() toiminto. %d on desimaalimuodon määrittäjä. Käytä kutakin muotomäärittelijää korvataksesi sen numerolla, jonka kertoimen haluat löytää ja saada tuloksen kutsumalla funktiota.
     printf("%d: n kerroin on %d", numero, tosiasia (num));
    palata0;
    }

Factorial-ohjelma Javassa

Java on käännetty ohjelmointikieli ja se on alustasta riippumaton. Tallennat kaiken koodin sisään a luokkaa ja toteutus alkaa pää toiminto. Kirjainkoolla on merkitystä ja syntaksi on tiukka. Koodi on hieman pidempi, mutta nopeampi verrattuna Pythoniin. Näin voit rakentaa tekijäohjelman käyttämällä Java-rekursiota:

  1. Määrittele pääluokka.
    luokkaaMain{
  2. Määritä staattinen funktio, jonka paluutyyppi on int ja joka hyväksyy muuttujan n kokonaislukutyypin. Ilmoitit staattisen menetelmän, koska päämenetelmä Javassa on myös ilmoitettu staattiseksi. Lisäksi et voi kutsua ei-staattista menetelmää staattisesta ilmentymästä.
    staattineninttosiasia(int n){
  3. Kirjoita funktion perustapaus käyttämällä jos lauseke ja tarkista sen tasa-arvo käyttämällä ==. Jos n on nolla, palauta yksi.
     jos (n == 0)
    palata1;
  4. Kirjoita yleinen yhtälö ja palauta tuotteen tulo n alitehtävän funktiokutsulla n-1.
    palata n * tosiasia (n - 1);
    }
  5. Ilmoita pääfunktio Javassa. Ilmoita pääsyn muokkaaja nimellä julkinen, joten se on kaikkien muiden luokkien ja menetelmien käytettävissä. Ilmoitat päätoiminnon nimellä staattinen jotta kääntäjä voi kutsua sen ilman luokkaa ilmentämättä. Palautustyyppi on tyhjä, ja se hyväksyy tyyppisiä argumentteja merkkijono. Tallenna numero, jonka kertoimen haluat löytää.
    julkinenstaattinenmitätönpää(merkkijono[] args){
    int numero = 5;
  6. Käytä println() menetelmä, esimerkki PrintStream luokka, määritelty kohdassa Järjestelmä luokka näyttääksesi luvun kertoimen.
     System.out.println("Factorial of " + numero + " On " + tosiasia (numero));
    }
    }

Factorial-ohjelma Pythonissa

Pythonissa koodin kirjoittaminen on erittäin helppoa ja hauskaa. Koska se on tulkittu alustasta riippumaton kieli, sinun ei tarvitse ilmoittaa muuttujien tietotyyppiä. Vältät myös luokkien ilmoittamista ja kirjastojen tuomista näin yksinkertaisessa ohjelmassa. Leikkipaikka on valmis, jotta voit aloittaa koodauksen.

Syntaksi on helpompi, pienellä koodipituudella, mutta sen suorittaminen vie hieman enemmän aikaa kuin muilla kielillä. Näin voit rakentaa tekijäohjelman rekursiolla Pythonissa:

  1. Määrittele funktion tosiasia, joka hyväksyy argumentiksi n.
    deftosiasia(n):
  2. Kirjoita funktion perustapaus käyttämällä jos lauseke ja tarkista sen tasa-arvo käyttämällä ==. Jos n on nolla, palauta yksi.
     jos n == 0:
    palata1
  3. Kirjoita yleinen yhtälö ja palauta tuotteen tulo n alitehtävän funktiokutsulla n-1.
    palata n * tosiasia (n-1)
  4. Tallenna numero, jonka kertoimen haluat löytää, ja näytä se print-lauseen avulla.
    luku = 5;
    Tulosta("Factorial of", numero, "On", tosiasia (numero))

Rekursiolla on monia sovelluksia

Rekursio on tehokas tapa ratkaista ongelmia. Se on tekoälyn ydin ja sillä on todellista käyttöä pulmapeleissä, kuten shakissa tai Sudokussa.

Se on myös tehokas menetelmä tietorakenteiden, kuten puun, tai lajittelualgoritmien, kuten pikalajittelun ja yhdistämislajittelun, lajitteluun. Voit myös käyttää rekursiota hakualgoritmeissa, kuten binäärihaussa, matemaattisissa lausekkeissa, kuten Fibonacci-sarjassa ja muissa.