永发信息网

编程求阶乘的问题?

答案:4  悬赏:60  手机版
解决时间 2021-04-14 04:48

求1-5的阶乘和

int n=0;int a=1;
for(int j=1;j<=5;j++)
{ a=1; //重置?为什么要重置,不重置的值是34863.重置了就对了
for(int i=1;i<=j;i++)
{ a=a*i;}
n=n+a;

想问一下具体的循环是怎么实现的(就是外层循环,内层循环具体怎么得到,举例比如当J=1,2,3;)还有重置的作用,以及不重置为何会得到34863这样的答案

需要详细点的分多少无所谓

最佳答案

用!表示阶乘,不重置的话,计算出来的是1!+1!2!+1!2!3!+1!2!3!4!+1!2!3!4!5!, 所以是34863。


因为不重置,每次都在前一项的基础上乘了一个i!,但是我们只需要在前一项的基础上乘以i就行了,所以多乘了。


重置的话,虽然是正确的,但是多此一举嘛,搞什么二重循环?觉得cpu太快了么?已经算好4!了,算5!的阶乘,只需要在4!上乘以5就行了,非得重置为1,然后再乘1 2 3 4 5,太浪费了……


正常的写法应该是:


int n=0, a=1;


for (int i=1; i<=5; i++)


{


a*=i;


n+=a;


}

全部回答

外层开始第一次循环j=1

执行a=1

~~内层开始第一次循环i=1

~~执行a=a*i=1*1=1

执行n=n+a=0+1=1

外层开始第二次循环j=2

执行a=1

~~内层开始第一次循环i=1

~~执行a=a*i=1*1=1

~~内层开始第二次循环i=2

~~执行a=a*i=1*2=2

执行n=n+a=1+2=3

外层开始第三次循环j=3

执行a=1(如果不执行的话a任然等于2)

~~内层开始第一次循环i=1

~~执行a=a*i=1*1=1(如果刚才不执行的话a=2)

~~内层开始第二次循环i=2

~~执行a=a*i=1*2=2(如果刚才不执行的话a=4)

~~内层开始第三次循环i=3

~~执行a=a*i=2*3=6(如果刚才不执行的话a=12)

执行n=n+a=3+6=9(如果刚才不执行的话n=15)

外层开始第四次循环j=4

…………

后面的就省略不写啦

在这段代码中,外层循环的目的是依次枚举从1到5一共5个数字,存入变量j;内层循环的作用是求j的阶乘,结果保存为变量a,然后把a累加到变量n。

求阶乘需要从1开始,沿自然数列依次向上乘,结果累乘到变量a,所以每次内层循环开始时变量a必须被重置成1,否则求下一个数字的阶乘时就不是从1开始计算了。

希望LZ能明白。

这个方法貌似麻烦了

之所以重至 是因为里面每次循环需要重新算一次阶乘

所以要把乘数归1 算出来的结果才对

但是这样写 就有点麻烦了 其实一道循环就够了

下面贴下我的代码

希望我的回答对你有帮助 如果有不懂可以继续问我

如果你满意我的回答 请选为满意答案

#include <iostream.h>

void main() { int sum=0,m=1; for(int i=1;i<=5;i++) { m*=i; sum+=m; } cout<<sum<<endl; }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单选题________ the rapid growth
浩博海航渔具专营店地址在哪,我要去那里办事
美术学?(美术史论)?
男生用,这三个头像哪个好看些?
心墙谁唱的好
沈阳有关英语专业的人才市场
一扇刚加工好的铝合金门称得8kg,这里物体是
“学术委员会采纳了两个青年科学家的建议”这
求寒夜客的《错爱》……鼠猫鼠猫……
一千三百多元的社保内都包括什么险
我孩子在学校打架,还和老师顶撞!而我从没有
乐山到深圳自驾车大概要花多少钱,有多少公里,
从新开始工作的好句子,工作从新开始的句子
隆尧到石家庄的车收费标准是多少?
人丑却颜控的颜控是什么意思
推荐资讯
一段迷茫的感情 分不清是朋友还是男女朋友关
N72 文本阅读器 问题
单选题“千里长江,险在荆江”其主要原因是:
单选题拿一支干燥的温度计放在电风扇下吹风,
怎么能让系统变快
阅读理解Veryhotweatheriscommoninmanypart
四川成渝H股代码是多少?
馨怡社区西门怎么去啊,有知道地址的么
在CF上如果强行退出房间会有什么处罚?
嫁入有钱人需要自身需要什么条件
四字成语猜谜大全猜谜高手
联想945gztlm主板最高支持什么CPU
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?