怎么做这个题?怎么编译

 

long fun(int n)
{
    if(n == 1)
        return 1;
    return n*fun(n-1);
}

 

供参考:

#include<stdio.h>
long fun(int n)
{
   int  i;
   long m=1;
   for(i=1;i<=n;i++) m*=i;
   return m;
}

int main()
{
   long sum=0;
   int  n,i;
   scanf("%d",&n);
   for(i=1;i<=n;i++)
       sum += fun(i);
   printf("%ld\n",sum);
   
   return 0;
}

 

long fun(int n) 
{
    if (n == 0)
        return 1;

    return n * fun(n-1);
}

注意考虑fun函数返回值溢出问题,n大于20后,就会有溢出,因此需要考虑一下;

 

 

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

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