import java.math.BigDecimal;
/**
* 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 1.程序分析:请抓住分子与分母的变化规律。
* 解题思路,把分子和分母分别装到数组中,然后再遍历求和
*
* @author Dreamweaver
*
*/
public class Demo20 {
public static void main(String[] args) {
// 前两个数的分子
int a1 = 2;
int a2 = 3;
int a3 = 0;
// 前两个数的分母
int b1 = 1;
int b2 = 2;
int b3 = 0;
int a[] = new int[20];
a[0] = 2;
a[1] = 3;
int b[] = new int[20];
b[0] = 1;
b[1] = 2;
for (int i = 3; i <= 20; i++) {
a3 = a1 + a2;
a1 = a2;
a2 = a3;
a[i - 1] = a2;
}
for (int i = 3; i <= 20; i++) {
b3 = b1 + b2;
b1 = b2;
b2 = b3;
b[i - 1] = b2;
}
// 遍历a、b数组求和
double sum = 0;
for (int i = 0; i < 20; i++) {
sum += (double) a[i] / b[i];
}
// 将小数四舍五入保留两位小数
BigDecimal bigDecimal = new BigDecimal(sum);
double d = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d);
}
}
/**
* 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 1.程序分析:请抓住分子与分母的变化规律。
* 解题思路,把分子和分母分别装到数组中,然后再遍历求和
*
* @author Dreamweaver
*
*/
public class Demo20 {
public static void main(String[] args) {
// 前两个数的分子
int a1 = 2;
int a2 = 3;
int a3 = 0;
// 前两个数的分母
int b1 = 1;
int b2 = 2;
int b3 = 0;
int a[] = new int[20];
a[0] = 2;
a[1] = 3;
int b[] = new int[20];
b[0] = 1;
b[1] = 2;
for (int i = 3; i <= 20; i++) {
a3 = a1 + a2;
a1 = a2;
a2 = a3;
a[i - 1] = a2;
}
for (int i = 3; i <= 20; i++) {
b3 = b1 + b2;
b1 = b2;
b2 = b3;
b[i - 1] = b2;
}
// 遍历a、b数组求和
double sum = 0;
for (int i = 0; i < 20; i++) {
sum += (double) a[i] / b[i];
}
// 将小数四舍五入保留两位小数
BigDecimal bigDecimal = new BigDecimal(sum);
double d = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(d);
}
}