Программа факториала числа

Опубликовано: 21 Января, 2022

Факториал неотрицательного целого числа - это умножение всех целых чисел, меньших или равных 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

https://www.youtube.com/watch?v=T9_ojJJeVSc

Вышеупомянутое решение вызывает переполнение для больших чисел. Обратитесь к факториалу большого числа для решения, которое работает для больших чисел.
Пожалуйста, напишите комментарии, если вы обнаружите какую-либо ошибку в приведенном выше коде / алгоритме, или найдете другие способы решения той же проблемы.

Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные математические концепции для соревновательного программирования с курсом Essential Maths for CP по доступной для студентов цене. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .