Care este factorialul unui număr?
- Factorialul unui număr întreg nenegativ este înmulțirea tuturor numerelor întregi pozitive mai mici sau egale cu n. De exemplu, factorial de 6 este 6*5*4*3*2*1 care este 720.
- Un factorial este reprezentat printr-un număr și un ! marca la sfarsit. Este utilizat pe scară largă în permutări și combinații pentru a calcula rezultatele totale posibile. Un matematician francez Christian Kramp a folosit mai întâi exclamația.

Să creăm un program factorial folosind funcții recursive. Până când valoarea nu este egală cu zero, funcția recursivă se va apela singură. Factorialul poate fi calculat folosind următoarea formulă recursivă.
n! = n * (n – 1)!
n! = 1 dacă n = 0 sau n = 1
Mai jos este implementarea:
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> |
>
mese din latex
>
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>>>>>IeșireFactorial of 5 is 120>Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)Soluție iterativă pentru a găsi factorialul unui număr:
Factorial poate fi, de asemenea, calculat iterativ, deoarece recursiunea poate fi costisitoare pentru numere mari. Aici am arătat abordarea iterativă folosind ambele bucle for și while.
Abordarea 1: Folosind bucla For
Urmați pașii pentru a rezolva problema:
- Folosind o buclă for, vom scrie un program pentru găsirea factorialului unui număr.
- O variabilă întreagă cu valoarea 1 va fi utilizată în program.
- Cu fiecare iterație, valoarea va crește cu 1 până când este egală cu valoarea introdusă de utilizator.
- Factorialul numărului introdus de utilizator va fi valoarea finală în variabila de fapt.
Mai jos este implementarea abordării de mai sus:
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
#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
părtinire și varianță
// 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>>int la char>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.>>>>>IeșireFactorial of 5 is 120>Complexitatea timpului: Pe)
Spațiu auxiliar: O(1)Abordarea 2: Acest exemplu folosește o buclă while pentru a implementa algoritmul și a găsi programul factorial.
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++
// 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
js onclick
// 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>>>>>>IeșireFactorial of 5 is 120>Complexitatea timpului: PE)
Spațiu auxiliar: O(1)Abordarea 3: A operator ternar poate fi considerată ca o prescurtare pentru o declarație if...else. Sunt furnizate condițiile, împreună cu instrucțiuni care urmează să fie executate pe baza acestora. Iată programul pentru factorial folosind un operator ternar.
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
// 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.>>>>>Ieșirecurs de matematică javaFactorial of 5 is 120>Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)Probleme la scrierea codului factorial
Când valoarea lui n se modifică crește cu 1, valoarea factorialului crește cu n. Deci variabila care stochează valoarea factorial ar trebui să aibă o dimensiune mare. Urmează valoarea lui n al cărui factorial poate fi stocat în dimensiunea respectivă.
1. întreg –> n<=12
2. lung lung int –> n<=19
Din datele de mai sus, putem vedea că o valoare foarte mică a lui n poate fi calculată din cauza creșterii mai rapide a funcției factoriale. Cu toate acestea, putem găsi valoarea mod a factorialului de valori mai mari luând mod la fiecare pas.
Soluția de mai sus provoacă depășire pentru un număr mare. Vă rugăm să consultați factorial de număr mare pentru o soluție care funcționează pentru numere mari.
Vă rugăm să scrieți comentarii dacă găsiți vreo eroare în codul/algoritmul de mai sus sau găsiți alte modalități de a rezolva aceeași problemă.