20! 是个非常大的数字,使用 unsigned long long int 存储整数得到的是不同的值:
#include <stdio.h>
unsigned long long factorial(int n)
{
if (n == 0)
return 1;
else
return (n * factorial(n-1));
}
void func() {
int i,t=1;
double s = 0;
for (i=1;i<=20;i++)
{
t*=i;
s += t;
}
printf("%g",s);
}
int main()
{
unsigned long long sum = 0;
for (int i = 1; i <= 20; i++)
sum += factorial(i);
printf("%llu\n", sum);
func();
return 0;
}
结果是:
2561327494111820313
4.56301e+09
如果数字再大一些,估计得用第三方库了。
但是 python 天然就支持任意大的表数范围,如果使用 python,
sum = 0
t = 1
for i in range(1, 21):
t *= i
sum += t
print(sum)
输出结果是 2561327494111820313
#include <stdio.h>
int main()
{
int i,t=1;
double s = 0;
for (i=1;i<=20;i++)
{
t*=i;
s += t;
}
printf("%g",s);
return 0;
}