如何计算c ++中double的阶乘

时间:2012-03-07 18:58:32

标签: c++ math

我希望某个地方有一个库功能可以做到这一点。 是的,非常重要的是它是double值的阶乘(即需要使用非整数值)。

3 个答案:

答案 0 :(得分:4)

C99标准库包含gamma函数double tgamma(double)。这与阶乘密切相关,因此您可以定义:

#include <cmath>

double factorial(double x) {return std::tgamma(x+1);}

这应该可以在任何C ++ 11实现中使用,但不能保证在C ++ 03实现中,它可能只包含C90库。如果您的实现没有它,那么Boost.Math库就可以了。

答案 1 :(得分:2)

无法为非整数定义阶乘的定义,但常见的推广是gamma function,为所有正实数和所有负非整数定义。

Boost::Math库包含一个tgamma()函数,可以通过实际输入和实际输出来计算它。

答案 2 :(得分:2)

因子是整数。您可能正在寻找的是伽马功能。在整数值Gamma(x)== Factorial(x-1),并为所有数字定义gamma。它有一个库函数:标题math.h中定义的tgamma