有一个测试点没过,
搞不明白少了那个条件,感觉n<0的话对题目应该没有影响;
希望各位指导。
你这样写效率超级低
int f = 1;
for (int i = 2; i < n= n; i++)
{
f = f * i;
sum+=f;
}
注意溢出,20的阶乘太大了,要用long long或unsigned long long型!
仅供参考!谢谢!
#include <stdio.h>
unsigned long long fac(unsigned n)
{
static unsigned long long res=1;
if(n==0 || n==1)
{
return 1;
}
else
{
res= fac(n-1)*n;
}
return res;
}
int main(void)
{
unsigned n;
unsigned long long sum=0;
scanf("%u",&n);
for(int i=0; i<=n; i++)
{
sum+=fac(i);
}
printf("%llu",sum);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: