一个数的阶乘的C程序

非负整数的阶乘是所有小于或等于n的整数的乘积。例如,6的阶乘是6*5*4*3*2*1,即720。

null

图片[1]-一个数的阶乘的C程序-yiteyi-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);
}
// Driver code
int main()
{
int num = 5;
printf ( "Factorial of %d is %d" ,
num, factorial(num));
return 0;
}


输出:

Factorial of 5 is 120

迭代:

#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;
}
// Driver code
int main()
{
int num = 5;
printf ( "Factorial of %d is %d" ,
num, factorial(num));
return 0;
}


输出:

Factorial of 5 is 120

单线溶液(使用三元运算符):

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


输出:

Factorial of 5 is 120

使用tgamma()方法:

例子:

Input: n = 4
Output: 24

语法:

tgamma(n+1)=n!
It works upto 20! because c can't store large value

实施: 使用 数学h头 申请这个

#include <math.h>
#include <stdio.h>
int main()
{
// use long long int
// for larger values of n
int n = 4;
// tgamma(n+1)=n!
n = tgamma(n + 1);
printf ( "%d" , n);
return 0;
// This code is contributed by Soumyadip Basak
}


输出:

24

上述解决方案会导致大量数据溢出。请参考 大数阶乘 这是一个适用于大量数据的解决方案。

请参阅完整的文章 一个数的阶乘程序 更多细节!

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享