Kas yra skaičiaus faktorialas?
- Neneigiamo sveikojo skaičiaus faktorialas yra visų teigiamų sveikųjų skaičių, mažesnių arba lygų n, daugyba. Pavyzdžiui, faktorialas iš 6 yra 6*5*4*3*2*1, kuris yra 720.
- Faktorius žymimas skaičiumi ir ! pabaigoje pažymėkite. Jis plačiai naudojamas permutacijose ir deriniuose, siekiant apskaičiuoti bendrus galimus rezultatus. Prancūzų matematikas Christianas Krampas pirmiausia panaudojo šauktuką.

Sukurkime faktorinę programą naudodami rekursines funkcijas. Kol reikšmė nebus lygi nuliui, rekursinė funkcija išsikvies pati save. Faktorių galima apskaičiuoti naudojant šią rekursinę formulę.
n! = n * (n – 1)!
n! = 1, jei n = 0 arba n = 1
Žemiau pateikiamas įgyvendinimas:
C++
// C++ program to find> // factorial of given number> #include> using> namespace> std;> > // Function to find factorial> // of given number> unsigned>int> factorial(unsigned>int> n)> > >if> (n == 0> > // Driver code> int> main()> {> >int> num = 5;> >cout <<>'Factorial of '> ><< num <<>' is '> << factorial(num) << endl;> >return> 0;> }> // This code is contributed by Shivi_Aggarwal> |
>
css sąrašus
>
C
// C program to find factorial of given number> #include> > // function to find factorial of given number> unsigned>int> factorial(unsigned>int> n)> {> >if> (n == 0)> >return> 1;> >return> n * factorial(n - 1);> }> > int> main()> {> >int> num = 5;> >printf>(>'Factorial of %d is %d'>, num, factorial(num));> >return> 0;> }> |
>
>
Java
// Java program to find factorial of given number> class> Test {> >// method to find factorial of given number> >static> int> factorial(>int> n)> >{> >if> (n ==>0>)> >return> 1>;> > >return> n * factorial(n ->1>);> >}> > >// Driver method> >public> static> void> main(String[] args)> >{> >int> num =>5>;> >System.out.println(>'Factorial of '> + num> >+>' is '> + factorial(>5>));> >}> }> |
>
>
Python3
# Python 3 program to find> # factorial of given number> > # Function to find factorial of given number> def> factorial(n):> > >if> n>=>=> 0>:> >return> 1> > >return> n>*> factorial(n>->1>)> > # Driver Code> num>=> 5>;> print>(>'Factorial of'>, num,>'is'>,> factorial(num))> > # This code is contributed by Smitha Dinesh Semwal> |
>
>
C#
// C# program to find factorial> // of given number> using> System;> > class> Test {> >// method to find factorial> >// of given number> >static> int> factorial(>int> n)> >{> >if> (n == 0)> >return> 1;> > >return> n * factorial(n - 1);> >}> > >// Driver method> >public> static> void> Main()> >{> >int> num = 5;> >Console.WriteLine(>'Factorial of '> >+ num +>' is '> + factorial(5));> >}> }> > // This code is contributed by vt_m> |
>
>
PHP
// PHP program to find factorial // of given number // function to find factorial // of given number function factorial($n) { if ($n == 0) return 1; return $n * factorial($n - 1); } // Driver Code $num = 5; echo 'Factorial of ', $num, ' is ', factorial($num); // This code is contributed by m_kit ?>>> |
>
>// Javascript to find factorial>// of given number>>// function to find factorial>// of given number>function>factorial(n) {>>if>(n == 0)>return>1;>>return>n * factorial(n - 1);>}>>// Driver Code>let num = 5;>document.write(>'Factorial of '>+ num +>' is '>+ factorial(num));>>// This code is contributed by Saurabh Jaiswal>>>>>IšvestisFactorial of 5 is 120>Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)Iteratyvus sprendimas norint rasti skaičiaus faktorialą:
Faktorius taip pat gali būti skaičiuojamas iteratyviai, nes dideliems skaičiams rekursija gali būti brangi. Čia parodėme iteracinį metodą, naudojant tiek for, tiek while kilpas.
1 metodas: Naudojant For kilpą
Norėdami išspręsti problemą, atlikite šiuos veiksmus:
- Naudodami for kilpą, parašysime programą skaičiaus faktorialui rasti.
- Programoje bus naudojamas sveikasis kintamasis, kurio reikšmė yra 1.
- Su kiekviena iteracija reikšmė padidės 1, kol ji bus lygi vartotojo įvestai reikšmei.
- Vartotojo įvesto skaičiaus faktorialas bus galutinė fakto kintamojo reikšmė.
Toliau pateikiamas pirmiau nurodyto metodo įgyvendinimas:
C++
// C++ program for factorial of a number>#include>using>namespace>std;>>// function to find factorial of given number>unsigned>int>factorial(unsigned>int>n)>{>>int>res = 1, i;>>for>(i = 2; i <= n; i++)>>res *= i;>>return>res;>}>>// Driver code>int>main()>{>>int>num = 5;>>cout <<>'Factorial of '>><< num <<>' is '>><< factorial(num) << endl;>>return>0;>}>>// This code is contributed by Shivi_Aggarwal>>>C
gimp išsaugojimas kaip jpeg
#include>>// function to find factorial of given number>unsigned>int>factorial(unsigned>int>n)>{>>int>res = 1, i;>>for>(i = 2; i <= n; i++)>>res *= i;>>return>res;>}>>int>main()>{>>int>num = 5;>>printf>(>>'Factorial of %d is %d'>, num, factorial(num));>>return>0;>}>>>Java
// Java program to find factorial of given number>class>Test {>>>// Method to find factorial of the given number>>static>int>factorial(>int>n)>>{>>int>res =>1>, i;>>for>(i =>2>; i <= n; i++)>>res *= i;>>return>res;>>}>>>// Driver method>>public>static>void>main(String[] args)>>{>>int>num =>5>;>>System.out.println(>>'Factorial of '>+ num>>+>' is '>+ factorial(>5>));>>}>}>>>Python3
# Python 3 program to find># factorial of given number>># Function to find factorial of given number>def>factorial(n):>>>res>=>1>>>for>i>in>range>(>2>, n>+>1>):>>res>*>=>i>>return>res>># Driver Code>num>=>5>;>print>(>'Factorial of'>, num,>'is'>,>factorial(num))>># This code is contributed by Smitha Dinesh Semwal>>>C#
// C# program to find>// factorial of given number>using>System;>>class>Test {>>// Method to find factorial>>// of given number>>static>int>factorial(>int>n)>>{>>int>res = 1, i;>>>for>(i = 2; i <= n; i++)>>res *= i;>>return>res;>>}>>>// Driver method>>public>static>void>Main()>>{>>int>num = 5;>>Console.WriteLine(>>'Factorial of '>+ num>>+>' is '>+ factorial(5));>>}>}>>// This code is contributed by vt_m>>>PHP
// function to find factorial // of given number function factorial( $n) { $res = 1; $i; for ($i = 2; $i <= $n; $i++) $res *= $i; return $res; } // Driver Code $num = 5; echo 'Factorial of ', $num, ' is ', factorial($num); // This code is contributed // by anuj_67. ?>>>>
>// JavaScript program to find factorial of given number>>>// Method to find factorial of the given number>>function>factorial(n)>>{>>var>res = 1, i;>>for>(i = 2; i <= n; i++)>>res *= i;>>return>res;>>}>>>// Driver method>>>var>num = 5;>>document.write(>'Factorial of '>+ num +>' is '>+ factorial(5));>>>// This code is contributed by shivanisinghss2110.>>>>>IšvestisFactorial of 5 is 120>Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(1)2 metodas: Šiame pavyzdyje algoritmui įgyvendinti ir faktorininei programai rasti naudojama sekundė.
C
// C program for factorial of a number>#include>>// function to find factorial of given number>unsigned>int>factorial(unsigned>int>n)>{>>if>(n == 0)>>return>1;>>int>i = n, fact = 1;>>while>(n / i != n) {>>fact = fact * i;>>i--;>>}>>return>fact;>}>>int>main()>{>>int>num = 5;>>printf>(>'Factorial of %d is %d'>, num, factorial(num));>>return>0;>}>>>C++
suderinamumo bandymas
// C++ program for factorial of a number>#include>using>namespace>std;>>// function to find factorial of given>// number using while loop>unsigned>int>factorial(unsigned>int>n)>{>>if>(n == 0)>>return>1;>>int>i = n, fact = 1;>>while>(n / i != n) {>>fact = fact * i;>>i--;>>}>>return>fact;>}>>// Driver code>int>main()>{>>int>num = 5;>>cout <<>'Factorial of '>><< num <<>' is '>><< factorial(num) << endl;>>return>0;>}>// This code is contributed by Shivi_Aggarwal>>>Java
// Java program to find factorial of given number>>class>Test {>>>// Method to find factorial of the given number>>static>int>factorial(>int>n)>>{>>if>(n ==>0>)>>return>1>;>>int>i = n, fact =>1>;>>while>(n / i != n) {>>fact = fact * i;>>i--;>>}>>return>fact;>>}>>>// Driver method>>public>static>void>main(String[] args)>>{>>int>num =>5>;>>System.out.println(>>'Factorial of '>+ num>>+>' is '>+ factorial(>5>));>>}>}>>>Python3
# Python 3 program to find># factorial of given number>># Function to find factorial of given number>def>factorial(n):>>if>(n>=>=>0>):>>return>1>>i>=>n>>fact>=>1>>>while>(n>/>i !>=>n):>>fact>=>fact>*>i>>i>->=>1>>>return>fact>># Driver Code>num>=>5>;>print>(>'Factorial of'>, num,>'is'>,>factorial(num))>># This code is contributed by Smitha Dinesh Semwal>>>C#
// C# program to find>// factorial of given number>using>System;>>class>Test {>>// Method to find factorial>>// of given number>>static>int>factorial(>int>n)>>{>>if>(n == 0)>>return>1;>>int>i = n, fact = 1;>>while>(n / i != n) {>>fact = fact * i;>>i--;>>}>>return>fact;>>}>>>// Driver method>>public>static>void>Main()>>{>>int>num = 5;>>Console.WriteLine(>>'Factorial of '>+ num>>+>' is '>+ factorial(5));>>}>}>>>Javascript
>>// JavaScript Program to implement>>// the above approach>>// function to find factorial of given>>// number using while loop>>function>factorial(n) {>>if>(n == 0)>>return>1;>>let i = n, fact = 1;>>while>(Math.floor(n / i) != n) {>>fact = fact * i;>>i--;>>}>>return>fact;>>}>>>// Driver code>>let num = 5;>>document.write(>'Factorial of '>>+ num +>' is '>>+ factorial(num) +>' '>);>>// This code is contributed by Potta Lokesh>>>>>>IšvestisFactorial of 5 is 120>Laiko sudėtingumas: O(N)
Pagalbinė erdvė: O(1)3 metodas: A trijų dalių operatorius gali būti laikomas sakinio if…else trumpiniu. Pateikiamos sąlygos kartu su pareiškimais, kurie turi būti vykdomi remiantis jomis. Štai programa, skirta faktorialui, naudojant trijų dalių operatorių.
C++
// C++ program to find factorial of given number>#include>using>namespace>std;>>int>factorial(>int>n)>>>// single line to find factorial>>return>(n == 1>>// Driver Code>int>main()>{>>int>num = 5;>>cout <<>'Factorial of '><< num <<>' is '><< factorial(num);>>return>0;>}>>// This code is contributed by shivanisinghss2110>>>C
masyvo sąrašas
// C++ program to find factorial of given number>#include>>int>factorial(>int>n)>n == 0) ? 1 : n * factorial(n - 1);>>>// Driver Code>int>main()>{>>int>num = 5;>>printf>(>'Factorial of %d is %d'>, num, factorial(num));>>return>0;>}>>// This code is contributed by Rithika palaniswamy.>>>Java
// Java program to find factorial>// of given number>class>Factorial {>>>int>factorial(>int>n)>>n ==>0>) ?>1>: n * factorial(n ->1>);>>>>>// Driver Code>>public>static>void>main(String args[])>>{>>Factorial obj =>new>Factorial();>>int>num =>5>;>>System.out.println(>>'Factorial of '>+ num>>+>' is '>+ obj.factorial(num));>>}>}>>// This code is contributed by Anshika Goyal.>>>Python3
# Python 3 program to find># factorial of given number>>def>factorial(n):>>># single line to find factorial>>return>1>if>(n>=>=>1>or>n>=>=>0>)>else>n>*>factorial(n>->1>)>>># Driver Code>num>=>5>print>(>'Factorial of'>, num,>'is'>,>>factorial(num))>># This code is contributed># by Smitha Dinesh Semwal.>>>C#
// C# program to find factorial>// of the given number>using>System;>>class>Factorial {>>>int>factorial(>int>n)>>>>>// Driver Code>>public>static>void>Main()>>{>>Factorial obj =>new>Factorial();>>int>num = 5;>>>Console.WriteLine(>>'Factorial of '>+ num>>+>' is '>+ obj.factorial(num));>>}>}>>// This code is contributed by vt_m.>>>PHP
// PHP program to find factorial // of given number function factorial( $n) $n == 0) ? 1: $n * factorial($n - 1); // Driver Code $num = 5; echo 'Factorial of ', $num, ' is ', factorial($num); // This code is contributed by anuj_67. ?>>>>
>>// JavaScript program to find factorial of given number>function>factorial(n)>>>// Driver Code>>>var>num = 5;>>document.write(>'Factorial of '>+num +>' is '>+ factorial(num));>>// This code is contributed by shivanisinghss2110.>>>>>Išvestiskoks mano monitoriaus dydisFactorial of 5 is 120>Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(n)Problemos rašant faktorialo kodą
Kai n reikšmė pasikeičia 1, faktorialo reikšmė padidėja n. Taigi faktorialo reikšmę turintis kintamasis turėtų būti didelio dydžio. Toliau pateikiama n reikšmė, kurios faktorialas gali būti saugomas atitinkamu dydžiu.
1. sveikasis skaičius –> n<=12
2. long long int –> n<=19
Iš aukščiau pateiktų duomenų matome, kad dėl spartesnio faktorinės funkcijos augimo galima apskaičiuoti labai mažą n reikšmę. Tačiau galime rasti didesnių reikšmių faktorialo mod reikšmę kiekviename žingsnyje imdami mod.
Aukščiau pateiktas sprendimas sukelia didelių skaičių perpildymą. Norėdami rasti sprendimą, tinkantį dideliems skaičiams, žr. didelio skaičiaus faktorių.
Rašykite komentarus, jei radote klaidų aukščiau pateiktame kode/algoritme arba raskite kitų būdų, kaip išspręsti tą pačią problemą.