Skaitļa faktoriāls ir svarīgs matemātisks jēdziens. Varat to izmantot, lai veiktu permutācijas un kombinācijas, rakstītu eksponenciālās un logaritmiskās izteiksmes un aprēķinātu varbūtību.

Varat to izmantot, lai atrastu dažādus veidus, kā izveidot sēdvietu izkārtojumu vai izvēlēties t-kreklus atvaļinājumam Maldivu salās. Bet kā jūs varat aprēķināt skaitļa faktoriālu?

Kas ir skaitļa faktoriāls?

Pozitīva skaitļa faktoriāls ir visu pozitīvo veselo skaitļu reizinājums, kas ir mazāks par paša skaitļa vērtību vai vienāds ar to. Skaitlis, kam seko izsaukuma zīme(!), apzīmē skaitļa faktoriālu. Jūs pārstāvat faktoriālu pieci kā 5! un aprēķiniet to šādi:

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

Vēl viens veids, kā to vizualizēt, ir:

5! = 5 * 4! kur 4! = 4 * 3!, 3! = 3 * 2! un tā tālāk, līdz iegūstat 1! = 1 * 0! kas ir 1.

Jūs izmantosit šo koncepciju, lai izveidotu mūsu faktoriālo programmu, izmantojot populāru koncepciju, ko sauc par rekursiju.

Kas ir rekursija?

Rekursija ir process, kurā funkcija izsauc sevi. Viena no šī procesa galvenajām priekšrocībām ir tā, ka lielāka problēma tiek sadalīta mazākos gabalos. Tas atvieglo problēmas risināšanu.

Varat izmantot rekursiju, lai atrisinātu atbilstošas ​​problēmas, veicot trīs vienkāršas darbības:

  1. Atrodiet pamatgadījumu: Ja funkcija vienmēr izsauc sevi, process būs bezgalīgs. Lai tas nenotiktu, definējiet bāzes gadījumu, kas kļūst par jūsu funkcijas loģisko pieturas punktu. Piemēram, faktoriālajā programmā apturiet aprēķinu pie nulles. Tas kļūst par problēmas pamata gadījumu.
  2. Atrodiet saikni starp problēmu un apakšproblēmām: Sadaliet lielāko problēmu apakšproblēmā. Piemēram, problēma ir atrast koeficientu pieci. Pieņemsim, ka jums ir četri faktoriāla atbilde, tas ir, 24. Kā jūs iegūsit faktoriālu pieci, izmantojot 24? Sareizinot tajā sevi ar pieci. Tā ir saikne starp problēmu un apakšproblēmu.
  3. Vispāriniet 2. darbībā atrasto saistību: Tagad, kad jums ir sakarība, vispāriniet to n izteiksmē. Tātad skaitļa n faktoriāls ir skaitļa n reizinājums un skaitļa n-1 reizinājums.

Varat izmantot šo koncepciju, lai atrast n naturālu skaitļu summu, aprēķiniet GCD, LCM, Fibonači sēriju un pārbaudiet pirmskaitļus.

Faktoriālās funkcijas pseidokods, izmantojot rekursiju

Tas ir kā jūs izmantojat rekursiju un uzrakstiet pseidokodu, lai izveidotu programmu jebkurā valodā. Izmantojot dažādas valodas, sintakse un izpilde mainās, bet loģika paliek neskarta.

funkcijuFakts(n)
Ja n == 0 tad // bāzes gadījums
Atgriezties1
Atgriezties n * Zvana fakts (n - 1) // vispārināta sakarība

Faktoru programma C

C bija pirmā augsta līmeņa, no platformas neatkarīgā programmēšanas valoda. Tam ir stingra sintakse, tas ir reģistrjutīgs un izpilda kodu ar ātrāko ātrumu. Tā ir procesuāla programmēšanas valoda, un tāpēc jūs deklarējat jebkuru funkciju papildus galvenais funkciju. Lūk, kā jūs varat izveidot faktoriālo programmu, izmantojot rekursiju C valodā:

Jūs varat atrast visu faktoriālās programmas avota kodu, izmantojot rekursiju programmās C, Java un Python šajā GitHub repozitorijs.

  1. Importējiet standarta ievades izvades galvenes failu, lai parādītu izvadi ekrānā.
    #iekļauts <stdio.h>
  2. Definējiet funkciju fakts un ņemt veselu skaitli n kā arguments.
    starptfakts(starpt n){
  3. Uzrakstiet funkcijas pamata reģistru, izmantojot ja apgalvojumu un pārbaudiet tā vienlīdzību, izmantojot ==. Ja n ir vienāds ar nulli, atgriež vienu.
     ja (n == 0)
    atgriezties1;
  4. Uzrakstiet vispārināto vienādojumu un atgrieziet reizinājumu n ar apakšproblēmas funkcijas izsaukumu n-1.
    atgriezties n * fakts (n - 1);
    }
  5. Deklarējiet galveno funkciju un inicializējiet vesela skaitļa tipa mainīgo, lai saglabātu skaitli, kura faktoriālu vēlaties atrast.
    starptgalvenais(){
    starpt skaits = 5;
  6. Parādiet skaitļa koeficientu, izmantojot printf() funkciju. %d ir decimālā formāta norādītājs. Izmantojiet katru formāta specifikāciju, lai aizstātu to ar numuru, kura faktoriālu vēlaties atrast, un iegūt rezultātu, izsaucot funkciju.
     printf("%d koeficients ir %d", skaitlis, fakts (num));
    atgriezties0;
    }

Factorial programma Java

Java ir kompilēta programmēšanas valoda un ir neatkarīga no platformas. Jūs glabājat visu kodu iekšpusē a klasē un izpilde sākas no galvenais funkciju. Tas ir reģistrjutīgs un stingra sintakse. Kods ir nedaudz garāks, bet ātrāks salīdzinājumā ar Python. Lūk, kā jūs varat izveidot faktoriālo programmu, izmantojot Java rekursiju:

  1. Definējiet galveno klasi.
    klasēGalvenā{
  2. Definējiet statisku funkciju ar atgriešanās veidu int, kas pieņem vesela skaitļa tipa mainīgo n. Jūs deklarējāt statisku metodi, jo galvenā Java metode arī tiek deklarēta kā statiska. Turklāt no statiskas instances nevar izsaukt nestatisku metodi.
    statisksstarptfakts(starpt n){
  3. Uzrakstiet funkcijas pamata reģistru, izmantojot ja apgalvojumu un pārbaudiet tā vienlīdzību, izmantojot ==. Ja n ir vienāds ar nulli, atgriež vienu.
     ja (n == 0)
    atgriezties1;
  4. Uzrakstiet vispārināto vienādojumu un atgrieziet reizinājumu n ar apakšproblēmas funkcijas izsaukumu n-1.
    atgriezties n * fakts (n - 1);
    }
  5. Deklarē Java galveno funkciju. Pasludināt piekļuves modifikatoru kā publiski, tāpēc tai var piekļūt ar visām pārējām klasēm un metodēm. Jūs deklarējat galveno funkciju kā statisks lai kompilators to varētu izsaukt, neveidojot klasi. Atgriešanas veids ir tukšs, un tā pieņem šāda veida argumentus Stīga. Saglabājiet numuru, kura faktoriālu vēlaties atrast.
    publiskistatisksnederīgsgalvenais(String[] args){
    starpt skaits = 5;
  6. Izmantojiet println() metode, piemērs PrintStream klase, kas definēta Sistēma klase, lai parādītu skaitļa faktoriālu.
     System.out.println("Faktoriāls no " + cipars + " ir " + fakts (skaits));
    }
    }

Factorial programma Python

Koda rakstīšana Python ir ļoti vienkārša un jautra. Tā kā tā ir interpretējama no platformas neatkarīga valoda, jums nav jādeklarē mainīgo datu tips. Jums arī nav jādeklarē klases un jāimportē bibliotēkas tik vienkāršai programmai. Rotaļu laukums ir gatavs, lai jūs varētu sākt kodēšanu.

Sintakse ir vienkāršāka ar nelielu koda garumu, taču izpilde prasa nedaudz vairāk laika nekā citām valodām. Lūk, kā jūs varat izveidot faktoriālo programmu, izmantojot Python rekursiju:

  1. Definējiet funkcijas faktu, kas tiek pieņemts kā arguments n.
    deffakts(n):
  2. Uzrakstiet funkcijas pamata reģistru, izmantojot ja apgalvojumu un pārbaudiet tā vienlīdzību, izmantojot ==. Ja n ir vienāds ar nulli, atgriež vienu.
     ja n == 0:
    atgriezties1
  3. Uzrakstiet vispārināto vienādojumu un atgrieziet reizinājumu n ar apakšproblēmas funkcijas izsaukumu n-1.
    atgriezties n * fakts (n-1)
  4. Saglabājiet numuru, kura faktoriālu vēlaties atrast, un parādiet to, izmantojot drukas paziņojumu.
    skaits = 5;
    drukāt ("Faktoriāls no", numurs, "ir", fakts (skaits))

Ir daudz rekursijas lietojumu

Rekursija ir efektīvs problēmu risināšanas veids. Tas ir mākslīgā intelekta būtība, un to var izmantot reālajā pasaulē tādās mīklu spēlēs kā šahs vai Sudoku.

Tā ir arī jaudīga metode datu struktūru, piemēram, koka, vai šķirošanas algoritmu, piemēram, ātrās kārtošanas un sapludināšanas kārtošanas, kārtošanai. Varat arī izmantot rekursiju meklēšanas algoritmos, piemēram, binārajā meklēšanā, matemātiskās izteiksmēs, piemēram, Fibonači sērijā un citos.