Факториал неотрицательного целого числа — это умножение всех целых чисел, меньших или равных n. Например, факториал 6 равен 6 * 5 * 4 * 3 * 2 * 1, что равно 720.
Рекурсивное решение: Факториал можно рассчитать по следующей рекурсивной формуле.
n! = n * (n-1)!
n! = 1 if n = 0 or n = 1
Ниже приводится реализация факториала.
C ++
// C ++ программа для поиска факториала с заданным числом #include<iostream>
usingnamespacestd;
// функция, чтобы найти факториал данного числа
unsigned intfactorial(unsigned intn)
{
if(n == 0)
return1;
returnn * factorial(n - 1);
}
// Код драйвера
intmain()
{
intnum = 5;
cout << "Factorial of "<< num << " is "<< factorial(num) << endl;
return0;
}
// Этот код предоставлен Shivi_Aggarwal
С
// C программа для поиска факториала с заданным числом #include<stdio.h>
// функция, чтобы найти факториал данного числа
unsigned intfactorial(unsigned intn)
{
if(n == 0)
return1;
returnn * factorial(n - 1);
}
intmain()
{
intnum = 5;
printf("Factorial of %d is %d", num, factorial(num));
return0;
}
Джава
// Java программа для поиска факториала с заданным числом
classTest
{
// метод для нахождения факториала заданного числа
staticintfactorial(intn)
{
if(n == 0)
return1;
returnn*factorial(n-1);
}
// Метод драйвера
publicstaticvoidmain(String[] args)
{
intnum = 5;
System.out.println("Factorial of "+ num + " is "+ factorial(5));
}
}
python3
# Python 3 программа для поиска # факториал заданного числа
deffactorial(n):
# единственная строка для поиска факториала
return1if(n==1orn==0) elsen *factorial(n -1);
Код водителя
num =5;
print("Factorial of",num,"is",
factorial(num))
# Этот код предоставлен Смитой Динеш Семвал
C #
// C # программа для поиска факториала // данного числа
usingSystem;
classTest
{
// метод поиска факториала
// данного числа
staticintfactorial(intn)
{
if(n == 0)
return1;
returnn*factorial(n-1);
}
// Метод драйвера
publicstaticvoidMain()
{
intnum = 5;
Console.WriteLine("Factorial of "
+ num + " is "+ factorial(5));
}
}
// Этот код предоставлен vt_m
PHP
<?php // PHP программа для поиска факториала // данного числа
// функция для поиска факториала // данного числа
functionfactorial($n)
{
if($n== 0)
return1;
return$n* factorial($n- 1);
}
// Код драйвера
$num= 5;
echo"Factorial of ",$num," is "
, factorial($num);
// Этот код предоставлен m_kit ?>
Выход:
Factorial of 5 is 120
Итеративное решение: Факториал также может быть рассчитан итеративно, поскольку рекурсия может быть дорогостоящей для больших чисел.
C ++
// C ++ программа для факториала числа #include<iostream>
usingnamespacestd;
// функция, чтобы найти факториал данного числа
unsigned intfactorial(unsigned intn)
{
intres = 1, i;
for(i = 2; i <= n; i++)
res *= i;
returnres;
}
// Код драйвера
intmain()
{
intnum = 5;
cout << "Factorial of "<< num << " is "<< factorial(num) << endl;
return0;
}
// Этот код предоставлен Shivi_Aggarwal
С
#include<stdio.h>
// функция, чтобы найти факториал данного числа
unsigned intfactorial(unsigned intn)
{
intres = 1, i;
for(i = 2; i <= n; i++)
res *= i;
returnres;
}
intmain()
{
intnum = 5;
printf("Factorial of %d is %d", num, factorial(num));
return0;
}
Джава
// Java программа для поиска факториала с заданным числом
classTest
{
// Метод нахождения факториала заданного числа
staticintfactorial(intn)
{
intres = 1, i;
for(i=2; i<=n; i++)
res *= i;
returnres;
}
// Метод драйвера
publicstaticvoidmain(String[] args)
{
intnum = 5;
System.out.println("Factorial of "+ num + " is "+ factorial(5));
}
}
python3
# Python 3 программа для поиска # факториал заданного числа
deffactorial(n):
# единственная строка для поиска факториала
return1if(n==1orn==0) elsen *factorial(n -1);
Код водителя
num =5;
print("Factorial of",num,"is",
factorial(num))
# Этот код предоставлен Смитой Динеш Семвал
C #
// C # программа для поиска // факториал заданного числа
usingSystem;
classTest
{
// Метод поиска факториала
// данного числа
staticintfactorial(intn)
{
intres = 1, i;
for(i = 2; i <= n; i++)
res *= i;
returnres;
}
// Метод драйвера
publicstaticvoidMain()
{
intnum = 5;
Console.WriteLine("Factorial of "+
num + " is "+ factorial(5));
}
}
// Этот код предоставлен vt_m
PHP
<?php
// функция для поиска факториала // данного числа
functionfactorial( $n)
{
$res= 1; $i;
for($i= 2; $i<= $n; $i++)
$res*= $i;
return$res;
}
// Код драйвера
$num= 5;
echo"Factorial of ", $num, " is ",
factorial($num);
// Этот код добавлен // от anuj_67. ?>
Выход :
Factorial of 5 is 120
Временная сложность указанных решений составляет O (n).
Решение в одну строку (с использованием тернарного оператора):
C ++
// C ++ программа для поиска факториала с заданным числом #include<iostream>
intfactorial(intn)
{
// одна строка для поиска факториала
return(n==1 || n==0) ? 1: n * factorial(n - 1);
}
// Код драйвера
intmain()
{
intnum = 5;
printf("Factorial of %d is %d", num, factorial(num));
return0;
}
// Этот код предоставлен Rithika palaniswamy.
Джава
// Java программа для поиска факториала // данного числа
classFactorial {
intfactorial(intn)
{
// одна строка для поиска факториала
return(n == 1|| n == 0) ? 1: n * factorial(n - 1);
}
// Код драйвера
publicstaticvoidmain(String args[])
{
Factorial obj = newFactorial();
intnum = 5;
System.out.println("Factorial of "+ num +
" is "+ obj.factorial(num));
}
}
// Этот код предоставлен Аншикой Гоял.
python3
# Python 3 программа для поиска # факториал заданного числа
deffactorial(n):
# единственная строка для поиска факториала
return1if(n==1orn==0) elsen *factorial(n -1)
Код водителя
num =5
print("Factorial of",num,"is",
factorial(num))
# Этот код добавлен # Смита Динеш Семвал.
C #
// C # программа для поиска факториала // данного числа
usingSystem;
classFactorial {
intfactorial(intn)
{
// одна строка для поиска факториала
return(n == 1 || n == 0) ? 1 :
n * factorial(n - 1);
}
// Код драйвера
publicstaticvoidMain()
{
Factorial obj = newFactorial();
intnum = 5;
Console.WriteLine("Factorial of "+ num +
" is "+ obj.factorial(num));
}
}
// Этот код предоставлен vt_m.
PHP
<?php // PHP программа для поиска факториала // данного числа
functionfactorial( $n)
{
// одна строка для поиска факториала
return($n== 1 || $n== 0) ? 1:
$n* factorial($n- 1);
}
// Код драйвера
$num= 5;
echo"Factorial of ", $num, " is ", factorial($num);
// Этот код предоставлен anuj_67. ?>
Выход:
Factorial of 5 is 120
Вышеуказанные решения вызывают переполнение для небольших чисел. Пожалуйста, обратитесь к факториалу большого числа для решения, которое работает для больших чисел.
Пожалуйста, пишите комментарии, если вы обнаружите какую-либо ошибку в приведенном выше коде / алгоритме, или найдете другие способы решения той же проблемы