#include <cmath>
int fact(int n){
return std::tgamma(n + 1);
}
// for n = 5 -> 5 * 4 * 3 * 2 = 120
//tgamma performas factorial with n - 1 -> hence we use n + 1
/*#include<bits/stdc++.h>
using namespace std;
iterative solution:
int fact (int n, int k)
{
if(n==0) return 1;
return fact(n-1,k*n);
}
int main()
{
int n,k=1;
cin>>n;
int ans=fact(n,k);
cout<<ans<<endl;
}*/
//recursive solution.
#include<bits/stdc++.h>
using namespace std;
int fact(int n)
{
if(n==0)return 1;
return n*fact(n-1);
}
int main(){
int n;
cin>>n;
cout<<fact(n)<<endl;
}
int factorial(int n)
{
return (n == 1 || n == 0) ? 1 : factorial(n - 1) * n;
}
#include <iostream>
using namespace std;
int main() {
int n;
long factorial = 1.0;
cout << "Enter number: ";
cin >> n;
if (n < 0)
cout << "Error! Factorial of a negative number doesn't exist.";
else {
for(int i = 1; i <= n; ++i) {
factorial *= i;
}
cout << "Factorial of " << n << " = " << factorial;
}
return 0;
}
#include <iostream>
using namespace std;
class Factorial
{
private:
int num;
int factorial = 1;
public:
void calculateFactorial();
void show();
};
void
Factorial::calculateFactorial()
{
cout << "Enter a number : " << endl;
cin >> num;
if (num == 0 || num == 1)
{
factorial = 1;
}
else
{
while (num > 1)
{
factorial = factorial * num;
num--;
}
}
}
void Factorial::show()
{
cout << "Factorial : " << factorial << endl;
}
int main()
{
Factorial factorial;
factorial.calculateFactorial();
factorial.show();
}