关于#c语言#的问题:求阶乘之和,搞不明白少了那个条件

img

img

有一个测试点没过,
搞不明白少了那个条件,感觉n<0的话对题目应该没有影响;
希望各位指导。

你这样写效率超级低
int f = 1;
for (int i = 2; i < n= n; i++)
{
f = f * i;
sum+=f;
}

注意溢出,20的阶乘太大了,要用long long或unsigned long long型!
仅供参考!谢谢!

img

img

#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;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^