计算这个列式前20项之和:2/1!- 3/2! + 5/3!-8
/4!+13/5!-21/6!...
先分析一个数列特征
分子:从第三项开始,每一项是前两项的和
分母:是n的阶乘
每一项正负号 交替
public static void main(String[] args) {
//定义分子前两项
int a1 = 2;
int a2 = 3;
//为方便循环,先累计前两项,
//2.0是为了保证 3/2.0 = 1.5; 3直接除以2是1;
double sum = 2 / 1 - 3 / 2.0;
//定义2的阶乘,做为分母的初始基础值
int factorial = 2;
//从第三项开始自循环
//第三项符号位正
boolean sign = true;
for (int i = 3; i <= 20; i++) {
//计算分子
int tmp1 = a1 + a2;
//更换分子初始时,做为下一个循环计算分子的基数
a1 = a2;
a2 = tmp1;
//计算分母
int tmp2 = factorial * i;
//更换分母初始时,做为下一个循环计算分母的基数
factorial = tmp2;
//累计当前值
if(sign){
//正号
//同样分子乘以1.0,是为了获得正确的小数值
sum += tmp1 * 1.0 / tmp2;
}else {
//负号
sum -= tmp1 * 1.0 / tmp2;
}
System.out.println("累计["+i+"]项和: " + sum);
//切换正负号
sign = sign ? false : true;
}
System.out.println(sum);
}