请求C++高手来帮忙:

来源:百度知道 编辑:UC知道 时间:2024/05/20 01:30:15
写一个求n的阶乘(n!)函数,在主函数中调用该函数求出1!+2!+…+20!的值并输出。(要求详细过程)

#include "stdio.h"
int a(int n)
{
if(n==0||n==1)
return 1;
else return n*a(n-1);
}
void main()
{
int i,s=0;
for(i=1;i<=20;i++)
s=s+a(i);
printf("%d",s);
}

我也来写一个!可能要好点!

#include <stdio.h>

//函数实现的是1!+2!+....+num!
double factorial (int num)
{
double sum=0;
int i,temp=1;
for(i=1;i<=num;i++)
{
temp*=i;
sum+=temp; //依次加的是1!+2!+....+num!
}
return sum;
}

int main()
{
printf("%f",factorial(20));
}

20!的阶乘?
这道题的难点不是递归,而是如何处理溢出。

当一个数太大了,溢出的时候,你可以把这个数转换成一维数组保存。

比如123456789.....等等很大很大
用数组保存 [1,2,3,4,5,6,7..]
用的时候再取出来乘以相应的倍数.

楼上正解