Program for factorial of a number

1

Factorial of a non-negative integer, is multiplication of all integers smaller than or equal to n. For example factorial of 6 is 6*5*4*3*2*1 which is 720.

factorial

Recursive Solution:
Factorial can be calculated using following recursive formula.

  n! = n * (n-1)!
  n! = 1 if n = 0 or n = 1 

Following is implementation of factorial.

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));
    }
}


Output:
Factorial of 5 is 120

Iterative Solution:
Factorial can also be calculated iteratively as recursion can be costly for large numbers.

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 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));
    }
}


Output:
Factorial of 5 is 120

Time complexity of the above solutions is O(n).

One line Solution (Using Ternary operator):

// 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.

Output:

Factorial of 5 is 120

Please write comments if you find any bug in above code/algorithm, or find other ways to solve the same problem.

GATE CS Corner    Company Wise Coding Practice

Recommended Posts:



1 Average Difficulty : 1/5.0
Based on 7 vote(s)










Writing code in comment? Please use ide.geeksforgeeks.org, generate link and share the link here.