编程求1!+2!+3!+4!···+12! ,并试着简化程序
答案:6 悬赏:70
解决时间 2021-02-18 22:01
- 提问者网友:不懂我就别说我变
- 2021-02-18 11:24
1!+2!+3!+4!···+12! 这个题目的意思是?
最佳答案
- 二级知识专家网友:嗷呜我不好爱
- 2021-02-18 12:39
我来回答你的问题吧,对于初学者来说呢,一般会采用好几重循环的方法来解决,程序看上去庞大切不易懂,对于阶乘问题最简算法应该就是递归了,对于阶乘和递归楼上都有说到,一楼的递归看起来有点晦涩,我给出我的代码,你自己去验证了;
int fn(int i)
{ if(i == 1)
return 1;
return i*fn(i-1);
}
int main(void)
{ int i;
for(i=0; i<=12;i++)
sum += fn(i);
printf("the result is : %d\n", sum);
return 0;
}
int fn(int i)
{ if(i == 1)
return 1;
return i*fn(i-1);
}
int main(void)
{ int i;
for(i=0; i<=12;i++)
sum += fn(i);
printf("the result is : %d\n", sum);
return 0;
}
全部回答
- 1楼网友:留下所有热言
- 2021-02-18 17:42
#include<stdio.h>
void main()
{
int n=1,sum=0,temp; //sum存放总和,temp暂时存放每个n!
while(n<13){ //外层while循环用来累加每个n!的和
temp=1;
while(n>0){ //内层循环用来求每个n的阶乘,并暂存在temp中
temp*=n;
n--;
}
sum+=temp;
n++;
}
}
- 2楼网友:眠于流年
- 2021-02-18 16:19
算法思想:因为在计算12!时,也计算了12以前的所有数字的阶乘,所有可以简化计算量。
##include<stdio.h>
double f(int n)
{
int sum=0;
int factorial=1;
int index=1;
while(index<=n)
{
factorial*=index;
#printf("%d\n",factorial);
sum+=factorial;
++index;
}
return sum;
}
int main()
{
int n=4;
printf("%f\n",f(n));
return 1;
}
- 3楼网友:抱不住太阳的深海
- 2021-02-18 15:22
n!的意思是1*2*3·····*(n-1)*n
如:3!=1*2*3=6
计算部分如下:
a=1;
sum=0;
for(i=1;i<=12;i++)
{
sum=sum+a*i
}
- 4楼网友:余生继续浪
- 2021-02-18 14:12
void main() { int sum = 0, i, sign = 1; for(i=1; i<=100; i++) { sum += sign*i; sign *= -1; } printf("1-2+3-4....100 = %d\n", sum); }
- 5楼网友:劳资的心禁止访问
- 2021-02-18 13:41
#include<stdio.h>
void main()
{
long jiecheng(int);
long sum,i;
sum=0;
for(i=1;i<=12;i++)
sum=sum+jiecheng(i);
printf("sum=%d\n",sum);
}
long jiecheng(int n)
{
int m,p;
p=1;
for(m=1;m<=n;m++)
p=p*m;
return(p);
}自己编的,试试看,应该没问题!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |