Программа факториала числа
Факториал неотрицательного целого числа - это умножение всех целых чисел, меньших или равных n. Например, факториал 6 равен 6 * 5 * 4 * 3 * 2 * 1, что составляет 720.
Рекурсивное решение:
Факториал можно рассчитать по следующей рекурсивной формуле.
п! = п * (п-1)! п! = 1, если n = 0 или n = 1
Рекомендуется: сначала решите эту проблему на «ПРАКТИКЕ», прежде чем переходить к решению.
Following is implementation of factorial.
C++
// C++ program to find factorial of given number #include <iostream> using namespace std; // function to find factorial of given number unsigned int factorial(unsigned int n) { if (n == 0) return 1; return n * factorial(n - 1); } // 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
// C program to find factorial of given number
#include <stdio.h>
// 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 // 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 ?> |
Выход:
Факториал 5 равен 120
Iterative Solution:
Factorial can also be calculated iteratively as recursion can be costly for large numbers. Here we have shown the iterative approach using both for and while loop.
Using For loop
C++
// C++ program for factorial of a number #include <iostream> 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 <stdio.h> // 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
<?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.
?>
Выход :
Факториал 5 равен 120
Using While loop
C
// C program for factorial of a number #include <stdio.h> // 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 <iostream> 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)); } } |
Выход :
Факториал 5 равен 120
Временная сложность описанных выше итерационных решений составляет O (n).
Однострочное решение (с использованием тернарного оператора):
C++
// C++ program to find factorial of given number
#include <iostream>
int factorial(int n)
{
// single line to find factorial
return (n == 1 || 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)
{
// single line to find factorial
return (n == 1 || 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) { // single line to find factorial return (n == 1 || n == 0) ? 1 : n * factorial(n - 1); } // 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
// PHP program to find factorial
// of given number
function factorial( $n)
{
// single line to find factorial
return ($n == 1 || $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.
?>
Выход:
Факториал 5 равен 120
Вышеупомянутое решение вызывает переполнение для больших чисел. Обратитесь к факториалу большого числа для решения, которое работает для больших чисел.
Пожалуйста, напишите комментарии, если вы обнаружите какую-либо ошибку в приведенном выше коде / алгоритме, или найдете другие способы решения той же проблемы.
Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные математические концепции для соревновательного программирования с курсом Essential Maths for CP по доступной для студентов цене. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .