非负整数的阶乘是所有小于或等于n的整数的乘积。例如,6的阶乘是6*5*4*3*2*1,即720。
null
递归:
// 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