日期:2014-05-20  浏览次数:20750 次

为什么这个变量在还要赋值
代码如下,是一个求阶乘的和的循环:
int num=0,sum=1;
for(int i=1;i<=10;i++)
{
sum=1;
for(int j=1;j<=i;j++)
{
sum=sum*j;

}
num=num+sum;

}
System.out.println("num="+num);
这个sum=1必须加上才能得到正确结果,不加就是一个很大的数字,
明明在外面已经赋过值了,为什么在循环体内还要赋一次。
------解决方案--------------------
不在循环体内赋值的话,每次内循环的sum都是上次内循环后的sum,而不是1,肯定不对的啊!
------解决方案--------------------
里面的那个循环算的是i的阶乘,这个阶乘是从1开始乘,1*2*3*4*...*i,在第一部只有sum为1才能得到正确的值,即1*1=1,这个1就是上面1*2*3*4*...*i的第一个1.
而外面的大的循环,则是计算num=num+sum;为主,算的是所有阶乘的和,sum是和里面那个小循环一起计算单个阶乘的