For working professionals
For fresh graduates
More
5. Array in C
13. Boolean in C
18. Operators in C
33. Comments in C
38. Constants in C
41. Data Types in C
49. Double In C
58. For Loop in C
60. Functions in C
70. Identifiers in C
81. Linked list in C
83. Macros in C
86. Nested Loop in C
97. Pseudo-Code In C
100. Recursion in C
103. Square Root in C
104. Stack in C
106. Static function in C
107. Stdio.h in C
108. Storage Classes in C
109. strcat() in C
110. Strcmp in C
111. Strcpy in C
114. String Length in C
115. String Pointer in C
116. strlen() in C
117. Structures in C
119. Switch Case in C
120. C Ternary Operator
121. Tokens in C
125. Type Casting in C
126. Types of Error in C
127. Unary Operator in C
128. Use of C Language
Can you write a factorial program in C using loops, recursion, and even built-in math functions like tgamma()? If you're exploring how to calculate the factorial of a number in C, there’s more than one way to do it. From simple iterative loops to recursion, and from pointer-based logic to one-liners with the ternary operator, each method reveals a new layer of how C handles memory, functions, and performance.
In this tutorial, you’ll learn how to write a C program to find the factorial of a number using multiple approaches:
Each section includes code, explanations, and execution flow so you can choose the best method for your use case.
Want to master core programming concepts like loops, recursion, and memory management?
Check out upGrad’s Software Engineering Courses to build your skills with real-world projects and expert mentorship.
Now, let’s understand what factorials are and how to calculate them mathematically.
A factorial is the product of all positive integers from 1 to a given number (n). It is represented by the symbol n!
Mathematical Definition
n! = n × (n − 1) × (n − 2 )× … × 3 × 2 × 1
Special case
0! = 1
Now, let’s have an example to get a better understanding
5! = 5 × 4 × 3 × 2 × 1 = 120
So, 5! = 120
Now, it’s time to explore different methods to find the factorial of a number in C programming.
In this section, we will explore different methods to find the factorial of a number in C Programming.
Iterative solutions are those that employ loops for solving problems. Let's understand how to calculate factorials using iterative solutions.
The 'for' loop is one of the most common iterative solutions in C programming. It iterates over a block of code a certain number of times. Here is how we can find the factorial of a number in C using a 'for' loop.
#include<stdio.h> |
In the above code, we initialize factorial to 1 and iterate from 1 to number. For each iteration, we multiply the current factorial with the iterator i and update the factorial.
Another popular loop in C programming is the 'while' loop. Let's see how we can leverage the 'while' loop to find the factorial of a number.
#include<stdio.h> |
In the 'while' loop, we decrement the number in every iteration until it is greater than 1. Meanwhile, we multiply factorial with a number.
In recursive solutions, a function calls itself until a base condition is met. Recursive methods can be handy for solving problems such as finding the factorial of a number.
Here is how we can find the factorial of a number in C using recursion.
#include<stdio.h> |
In the above code, the factorial function calls itself with number-1 until the number is greater or equal to 1. For each recursive call, the function returns the product of the number and factorial(number-1). If the number is less than 1, it returns 1, which is the base case for factorial calculation.
A ternary operator can be used to find the factorial of a number using a recursive method. It works as a short form for an 'if-else' statement.
#include<stdio.h> |
In this code, the ternary operator checks if the number is greater than or equal to 1; if true, it returns the product of the number and factorial(number-1); otherwise, it returns 1.
In C, the tgamma function provides the Gamma function, which is essentially (number-1)!. We can use this function to easily calculate factorials.
#include <stdio.h> |
In the code above, we prompt the user to enter a number, read it using scanf(), and then calculate the factorial using tgamma(number + 1). The tgamma() function is applied to (number + 1) to calculate the factorial of a number. The result is then printed using printf().
We can define a separate function for calculating factorial and call this function whenever we need to find the factorial of a number in C using function.
#include<stdio.h> |
In this code, we have a separate function factorial, which calculates and returns the factorial of the given number.
Pointers in C can also be used to calculate the factorial of a number. Here's how you can do it:
#include<stdio.h> |
In this code, we pass a pointer fact to the factorial function. Inside the function, we calculate the factorial and update the value pointed by the fact pointer.
Conclusion
There are multiple methods to calculate the factorial of a number in C. Whether it's using an iterative solution, recursion, the tgamma() method, or pointers, the most suitable method will depend on the specific needs of your program. It's a good idea to be familiar with each approach as they all reinforce key concepts in C programming.
The time complexity of the factorial function implemented using recursion is linear, denoted as O(n). This is because the function makes n recursive calls, each of which involves a constant amount of work.
The initial value of 'factorial' is set to 1 because the factorial of 0 is 1, and multiplication with 0 would result in the factorial being 0 for all numbers.
The 'tgamma()' function in C returns the gamma function of a number. For positive integers, the gamma function of a number is equal to the factorial of (number-1). We add 1 to our number before passing it to 'tgamma()' to find the factorial.
Yes, the recursive solution can be slower and more memory-intensive than the iterative one, especially for large input values. This is because each recursive call adds a new layer to the system's call stack. In comparison, the iterative solution only requires a single loop and does not add to the call stack.
You can use a simple for loop to calculate factorials in C. The loop multiplies values from 1 to n:
int fact = 1;
for(int i = 1; i <= n; i++) {
fact *= i;
}
This is the most common and beginner-friendly method for finding the factorial of a number.
A recursive function calls itself until a base condition is met. Here's how you calculate factorial using recursion:
int factorial(int n) {
if(n == 0) return 1;
return n * factorial(n - 1);
}
This method demonstrates how C handles function calls and recursion depth.
Yes, a while loop can be used similarly to a for loop:
int fact = 1, i = 1;
while(i <= n) {
fact *= i;
i++;
}
This iterative method avoids recursion and is memory efficient for large input values.
Encapsulate the logic in a reusable function:
int factorial(int n) {
int result = 1;
for(int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
Call factorial(n) in main() to compute and display the result.
You can pass a pointer to a function that updates the result directly:
void factorial(int n, int *res) {
*res = 1;
for(int i = 1; i <= n; i++) {
*res *= i;
}
}
This method helps practice pointer handling and parameter passing in C.
A ternary operator can simplify recursive logic into a one-liner:
int factorial(int n) {
return (n <= 1) ? 1 : n * factorial(n - 1);
}
This compact version is functionally identical to a recursive approach.
C’s math.h library includes tgamma() which returns the factorial of n - 1. To get n!, use:
#include <math.h>
double fact = tgamma(n + 1);
It’s efficient for floating-point numbers and large values but not ideal for teaching logic.
Take a Free C Programming Quiz
Answer quick questions and assess your C programming knowledge
Author|900 articles published
Talk to our experts. We are available 7 days a week, 9 AM to 12 AM (midnight)
Indian Nationals
1800 210 2020
Foreign Nationals
+918068792934
1.The above statistics depend on various factors and individual results may vary. Past performance is no guarantee of future results.
2.The student assumes full responsibility for all expenses associated with visas, travel, & related costs. upGrad does not provide any a.