De faculteit van een getal is een belangrijk wiskundig concept. U kunt het gebruiken om permutaties en combinaties uit te voeren, exponentiële en logaritmische uitdrukkingen te schrijven en waarschijnlijkheid te berekenen.

Je gebruikt het om het aantal verschillende manieren te vinden waarop je een tafelschikking kunt ontwerpen, of t-shirts kunt kiezen voor je vakantie naar de Malediven. Maar hoe bereken je de faculteit van een getal?

Wat is de faculteit van een getal?

De faculteit van een positief getal is het product van alle positieve gehele getallen kleiner dan of gelijk aan de waarde van het getal zelf. Een getal gevolgd door een uitroepteken(!) geeft de faculteit van een getal aan. Je vertegenwoordigt de faculteit van vijf als 5! en bereken het als:

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

Een andere manier om het te visualiseren is:

5! = 5 * 4! waar 4! = 4 * 3!, 3! = 3 * 2! en zo verder tot je er 1 hebt! = 1 * 0! dat is 1.

Je gaat dit concept gebruiken om ons faculteitsprogramma te bouwen met behulp van een populair concept genaamd recursie.

instagram viewer

Wat is recursie?

Recursie is een proces waarbij een functie zichzelf aanroept. Een van de belangrijkste voordelen van dit proces is dat het een groter probleem opdeelt in kleinere stukjes. Dit maakt het probleem gemakkelijker op te lossen.

U kunt recursie gebruiken om passende problemen in drie eenvoudige stappen op te lossen:

  1. Zoek het basisgeval: Als een functie zichzelf altijd aanroept, is het proces oneindig. Om dit te voorkomen, definieert u een basisscenario dat het logische eindpunt voor uw functie wordt. Stop bijvoorbeeld in een faculteitsprogramma de berekening bij nul. Dit wordt het basisscenario voor het probleem.
  2. Zoek de relatie tussen het probleem en de deelproblemen: Splits het grotere probleem op in een subprobleem. Het probleem is bijvoorbeeld om de faculteit van vijf te vinden. Stel dat je het antwoord hebt van de faculteit van vier, dat is 24. Hoe krijg je de faculteit van vijf met 24? Door zichzelf er vijf in te vermenigvuldigen. Dit is de relatie tussen het probleem en het deelprobleem.
  3. Generaliseer de relatie gevonden in stap 2: Nu je de relatie hebt, generaliseer je deze in termen van n. Dus de faculteit van een getal n is het product van n en de faculteit van n-1.

U kunt dit concept gebruiken om vind de som van n natuurlijke getallen, bereken GCD, LCM, de Fibonacci-reeks en controleer priemgetallen.

Pseudocode voor de faculteitsfunctie met behulp van recursie

Dit is hoe je recursie gebruikt en schrijf de pseudocode om uw programma in elke taal te bouwen. Met verschillende talen veranderen de syntaxis en uitvoering, maar de logica blijft intact.

functieFeit(N)
Als n == 0 Dan // hoofdzaak
Opbrengst1
Opbrengst n * Noem feit (n - 1) // gegeneraliseerde relatie

Factorieel programma in C

C was de eerste platformonafhankelijke programmeertaal op hoog niveau. Het heeft een strikte syntaxis, is hoofdlettergevoelig en voert code uit met de hoogste snelheid. Het is een procedurele programmeertaal en daarom declareer je elke functie bovenop de voornaamst functie. Hier ziet u hoe u het faculteitsprogramma kunt bouwen met behulp van recursie in C-taal:

Hierin vindt u de volledige broncode van het faculteitsprogramma met behulp van recursie in C, Java en Python GitHub-opslagplaats.

  1. Importeer het standaard invoer-uitvoer-headerbestand om de uitvoer op het scherm weer te geven.
    #erbij betrekken <standaard.h>
  2. Definieer functie feit en neem een ​​geheel getal N als argument.
    intfeit(int N){
  3. Schrijf het basisscenario van de functie met behulp van de als verklaring en controleer de gelijkheid ervan met behulp van ==. Als n gelijk is aan nul, retourneer dan één.
     als (n == 0)
    opbrengst1;
  4. Schrijf de gegeneraliseerde vergelijking en retourneer het product van N met een functieaanroep van subprobleem n-1.
    opbrengst n * feit (n - 1);
    }
  5. Declareer de hoofdfunctie en initialiseer een variabele van het type geheel getal om het getal op te slaan waarvan u de faculteit wilt vinden.
    intvoornaamst(){
    int aantal = 5;
  6. Geef de faculteit van het getal weer met behulp van de printf() functie. %D is de specificatie van het decimale formaat. Gebruik elk van de formaatspecificaties om het te vervangen door het getal waarvan u de faculteit wilt vinden en verkrijg het resultaat door de functie aan te roepen.
     printf("Faculteit van %d is %d", num, feit (num));
    opbrengst0;
    }

Factorieel programma in Java

Java is een gecompileerde programmeertaal en is platformonafhankelijk. Je slaat alle code op in een klas en de uitvoering begint vanaf de voornaamst functie. Het is hoofdlettergevoelig en syntaxis strikt. De code is iets langer maar sneller in vergelijking met Python. Hier ziet u hoe u het faculteitsprogramma kunt bouwen met behulp van recursie in Java:

  1. Definieer de hoofdklasse.
    klasVoornaamst{
  2. Definieer een statische functie met retourtype int die een variabele n van het type geheel getal accepteert. U hebt een statische methode gedeclareerd, aangezien de hoofdmethode in Java ook als statisch wordt gedeclareerd. Bovendien kunt u geen niet-statische methode aanroepen vanuit een statische instantie.
    statischintfeit(int N){
  3. Schrijf het basisscenario van de functie met behulp van de als verklaring en controleer de gelijkheid ervan met behulp van ==. Als n gelijk is aan nul, retourneer dan één.
     als (n == 0)
    opbrengst1;
  4. Schrijf de gegeneraliseerde vergelijking en retourneer het product van N met een functieaanroep van subprobleem n-1.
    opbrengst n * feit (n - 1);
    }
  5. Declareer de hoofdfunctie in Java. Declareer de toegangsmodifier als openbaar, zodat het toegankelijk is voor alle andere klassen en methoden. U declareert de hoofdfunctie als statisch zodat de compiler het kan aanroepen zonder de klasse te instantiëren. Het retourtype is leegte, en het accepteert argumenten van het type Snaar. Sla het getal op waarvan u de faculteit wilt vinden.
    openbaarstatischleegtevoornaamst(String[] argumenten){
    int aantal = 5;
  6. Gebruik de println() methode, een instantie van de PrintStream klasse, gedefinieerd in de Systeem klasse om de faculteit van het getal weer te geven.
     Systeem.uit.println("faculteit van " + aantal + " is " + feit (aantal));
    }
    }

Factorieel programma in Python

Code schrijven in Python is supergemakkelijk en leuk. Omdat het een geïnterpreteerde platformonafhankelijke taal is, hoeft u het gegevenstype van variabelen niet te declareren. Je hoeft ook geen klassen te declareren en bibliotheken te importeren voor zo'n eenvoudig programma. De speeltuin staat voor je klaar om te beginnen met coderen.

De syntaxis is eenvoudiger, met een kleine codelengte, maar het kost iets meer tijd om uit te voeren dan de andere talen. Hier ziet u hoe u het faculteitsprogramma kunt bouwen met behulp van recursie in Python:

  1. Definieer de functie feit dat als argument n accepteert.
    deffeit(N):
  2. Schrijf het basisscenario van de functie met behulp van de als verklaring en controleer de gelijkheid ervan met behulp van ==. Als n gelijk is aan nul, retourneer dan één.
     als n == 0:
    opbrengst1
  3. Schrijf de gegeneraliseerde vergelijking en retourneer het product van N met een functieaanroep van subprobleem n-1.
    opbrengst n * feit (n-1)
  4. Sla het nummer op waarvan u de faculteit wilt vinden en geef het weer met behulp van de afdrukopdracht.
    getal = 5;
    afdrukken("faculteit van", num, "is", feit (aantal))

Er zijn veel toepassingen van recursie

Recursie is een effectieve manier om problemen op te lossen. Het is de kern van kunstmatige intelligentie en wordt in de echte wereld gebruikt in puzzelspellen zoals schaken of Sudoku.

Het is ook een krachtige methode voor het sorteren van gegevensstructuren zoals Boom of sorteeralgoritmen zoals Snel sorteren en Samenvoegen. U kunt ook recursie gebruiken in zoekalgoritmen zoals binair zoeken, wiskundige uitdrukkingen zoals de Fibonacci-reeks en meer.