我希望某个地方有一个库功能可以做到这一点。 是的,非常重要的是它是double值的阶乘(即需要使用非整数值)。
答案 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