用C语言中的递归函数求 1!+21!+31!+......+201!

2024-12-29 05:17:37
推荐回答(4个)
回答1:

#include

__int64 factorial( __int64 n)

{

    if( n == 1 )

        return 1 ;

    else

        return n*factorial ( n-1 ) ;

}

void main()

{

   __int64  factorial_sum = 0;

    for(__int64 i = 1 ; i < 202 ; i++ )

        factorial_sum += factorial( i ) ;

    printf("The answer is :%I64d\n",factorial_sum);

}

 

运行结果如图 

需要注意的是,1!+21!+31!+......+201!的结果大的惊人,已经不能用长整形来表示了,所以要用到64位整型数,即用64位来表示一个整数,其范围自己算吧

 

 

如有不足,欢迎指正!

回答2:

求n!的递归函数:
int fac(int n)
{
int f;
if(n<0)
printf("n<0,data error!");
else if(n==0 || n=1)
f=1;
else
f=fac(n-1)*n;
return(f);
}

希望对你能够有所帮助,如果满意,请选满意回答~~

回答3:

数太大了 根本不行,不信的话你求一下30的阶乘,会溢出的,没办法,用大整数运算吧

回答4:

#include
#include

size_t factorial(size_t n);
size_t factorial_for_1(size_t n);

int main(int argc, char *argv[])
{
size_t n = 11;
if (argc != 0)
{
n = (size_t)atoi(argv[1]);
}

printf("%zd\n", n);
printf("%zd\n", factorial_for_1(n));
return 0;
}

size_t factorial_for_1(size_t n)
{
if (n % 10 != 1)
{
return 0;
}
else if (n == 1)
{
return 1;
}

return factorial(n) + factorial(n-10);
}

size_t factorial(size_t n)
{
if (n == 1)
{
return 1;
}
return factorial(n-1) * n;
}