#include<stdio.h>
int main()
{
int i,j,n;
double t,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=1; //每次进循环 t=1 那第一次进循环的时候 i=1 到第二循环的时候 表达式一 j=2 但表达式二 j又<=1 这怎么运行的
for(j=2;j<=i;j++)
t=t*j;
s=s+t;
}
printf("%f",s);
return 0;
}
表达式一 j=2 但表达式二 j又<=1 ,循环条件不满足,不进行循环,直接进行后面的s+t运算。
for(j=2;j<=i;j++)
t=t*j;
这个是算阶乘的,每个数独立计算,这样如果不把t初始化为1,那么后面数的阶乘是在前一个数基础上乘的,阶乘计算就不对了。
这个循环可以简化为
for(t=1,i=1;i<=n;i++)
{
t*=i; //计算阶乘,
s+=t;
}
当i=1的时候,第二个循环 j<=i为假 所以循环不运行 ,当i>=2的时候才运行