题目不说清,别人就无法回答。
n是否允许非整数我就不说了,起码你要告诉别人n最大的取值是多少吧,否则你让别人用什么类型才存储?

程序代码:
#include <iostream>
#include <cmath>
int main( void )
{
unsigned n = 5;
std::cout << n << "! = " << std::tgamma(n+1) << '\n';
long double m = 5.2;
std::cout << m << "! = " << std::tgamma(m+1) << '\n';
}
输出
5! = 120
5.2! = 169.406

程序代码:
#include <iostream>
unsigned long long foo( unsigned n )
{
unsigned long long result = 1;
for( ; n!=0; --n )
result *= n;
return result;
}
int main( void )
{
unsigned n = 5;
std::cout << n << "! = " << foo(n) << '\n';
}
输出
5! = 120