这道题不理解
本帖最后由 soldier 于 2011-4-30 08:27 编辑这个函数是计算阶乘的。
long f2(int q) //比如说这里 q 是6
{
long c=1;
int i; 我的理解是:第一次循环1=1*1第二次循环2=1*2第三次循环6=2*3
for(i=1;i<=q;i++) 第四次循环24=6*4第五次循环120=24*5好像不对啊。那他是怎么实
c=c*i; /*这里不就不太明白了。 现6*5*4*3*-2*1的。望高手指点。
return c;
} 第1次循环开始,c=0!. 在循环过程中, c=c*1=0!*1=1!,第1次循环结束,c=1!
第2次循环开始,c=1!. 在循环过程中, c=c*2=1!*2=2!,第2次循环结束,c=2!
第3次循环开始,c=2!. 在循环过程中, c=c*3=2!*3=3!,第3次循环结束,c=3!
...
第i次循环开始,c=(i-1)!. 在循环过程中, c=c*i=(i-1)!*i=i!,第i次循环结束,c=i! 如果写成c=1*1*2*3*4*5也许楼主就明白了,第一个1是C自己,后面每次递增的都是I
C放的是每次相乘的结果,每一次和I相乘,结果放回C
然后再用结果C和自增1的I再乘,结果再放回C
啊知道了那个星号是不是代表阶乘的意思啊。不是乘号。
还有点不懂。没开始循环之前c=1 人家不是已经赋值为1了吗
为什么你那里c=0不理解 哦,这下真的明白了。每次循环都是计算的积乘以递增的i的值.
c=c*i; 其实这句我是理解的。我楞吧他想成是c=1*1;c=1*2;c=2*3;c=3*4荒唐真是太荒唐了。估计脑袋是进水了,真想扇自己两耳光。犯了个低级错误。
以前没接触过阶乘这个概念,弄的我有点晕了。(自己是初中毕业,小学文化程度。哎~后悔) 非常感谢两位的回答,谢谢了。 c=c*i; 1*1
1*2
2*3
6*4
24*5
120*6 是这样的
页:
[1]