C++程序设计的一个简单问题求截.

来源:百度知道 编辑:UC知道 时间:2024/06/19 02:48:34
从键盘输入一个整数n,按下列求出y的值。 Y=1!+2!+4! +7! +11! +…,求前n项之和--题目。
int n,m,l=1,i=1,j,s=0;
cout<<"输入一个数n:";
cin>>n;
for(m=0;m<n;m++)
{
l+=m;
for(j=1;j<=l;j++)
i*=j;
s+=i;
i=1;
}
cout<<"y="<<s<<'\n';
这是我做的程序,但是我不明白为什么最后要有个i=1,但是我去掉后答案又不对,有知道的解释一下。

1!=1;
2!=1乘2
4!=1乘2乘3乘4

你看到这个1了吗?这个1就是i,外层循环计算机的是1!,2!,4!
所以每次内层循环结束后i都要恢复到1

i是计算y的第n项用的,计算完毕后就让s+=i,算出1!+2!+......+m!,所以i每次都要清零.否则,当m=1时,i=1.m-2时,i=2.m=3时,i=16.所以就出错了.

好 我也学学