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

关于java阶乘运算的,有一点始终不明白,请帮忙解释下谢谢。
import java.math.BigDecimal;

public class Example036 {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
BigDecimal sum=new BigDecimal(0.0);
//保存总和的变 量。
BigDecimal factorial=new BigDecimal(1.0);
//阶乘项的计算结果。
int i=1;
while(i<=1)//循环2次。
{

sum=sum.add(factorial);
//累加各项阶乘的和=1。
++i;
//i=2;
factorial=factorial.multiply(new BigDecimal(1.0/i));

}
System.out.println("1+1/2!+1/3!+....+1/20! 的结果是 \n"+sum);
//输出计算结果,因为要求和,所以要+的时sum.这个sum相当于sum=sum.add(factorial);

}

}


         ++i;
//i=2;
factorial=factorial.multiply(new BigDecimal(1.0/i));

我想问下,这个i++的变化和factorial=factorial.multiply(new BigDecimal(1.0/i));是有关系的吧,factorial=factorial.multiply(new BigDecimal(1.0/i));这个i是表示的什么呢?求详细解释,最好整句解释下谢谢。
Java

------解决方案--------------------
factorial=factorial.multiply(new BigDecimal(1.0/i)); //这里还是执行的

1/2!就是1*(1/2)
1/3!就是1*(1/2)*(1/3)===>相当于1/2!*(1/3)啊.
1/4!就是1*(1/2)*(1/3)*(1/4)===>相当于1/3!*(1/4)啊.

每次循环都会累积下来.new BigDecimal(1.0/i)就是每次*1/i