在c ++中是否有内置的阶乘函数?

时间:2018-05-02 10:51:28

标签: c++

我搜索过,但我找不到这个。有人请告诉我,如果c ++中有任何内置的阶乘函数吗?

6 个答案:

答案 0 :(得分:14)

虽然没有专门为计算因子定义的C函数,但C数学库允许您计算gamma function。因为Г(n)=(n-1)!对于正整数,使用$q1 = array(); 的{​​{1}}会产生i+1

如果您使用用户定义的阶乘函数,则会打印相同的数字:

i!

tgamma

for (int i = 1 ; i != 10 ; i++) {
    printf("%lld %f\n", factorial(i), tgamma(i+1));
}

注意:考虑到编码阶乘函数是多么容易,使用gamma计算阶乘就像用大锤杀死苍蝇一样。

答案 1 :(得分:3)

不,标准库中没有这样的功能。

答案 2 :(得分:3)

不,在标准c ++中,没有像factorial这样的功能,但你可以在boost库中找到相同的功能:boost::math::factorial

答案 3 :(得分:0)

STL不提供阶乘的功能,但您可以递归地计算一行:

int fact(int n){

     return (n==0) || (n==1) ? 1 : n* fact(n-1);
}

答案 4 :(得分:0)

在c ++ STL中不存在用于查找阶乘的函数。 您应该编写自己的函数以查找阶乘

答案 5 :(得分:0)

即使使用C或C ++的DP,编写阶乘的慢速版本也很容易。但是,Python 3中实现了更快的算法:

请参见https://hg.python.org/cpython/file/7937aa6b7e92/Modules/mathmodule.c#l1218

因此,最好将其添加到STL imho中。