/*
* 序列:2/1,3/2,5/3,8/5,13/8,21/13...
* 定义一个方法求出这个数列的前20 项之和
* 分析:
* 前2项 2/1+3/2 =4/2+3/2=7/2
* 前3项 7/2+5/3=21/6+10/6=31/6
* 前4项31/6+8/5=155/30+48/30=203/30
* 前5项203/30+13/8=1624/240+390/240=2014/240
* arrmu[0]=1 arrzi[0]=2
* arrmu[1]=2 arrzi[1]=3
* arrmu[2]=3 arrzi[2]=5
* arrmu[3]=5 arrzi[8]=8
*
* eclipse能够运算分数+分数
* 定义二维数组接收分子,分母,array[偶数][0]=分子,array[奇数][1]=分母
*
*/
public class Demo09_New {
public static void main(String[] args) {
// 定义前多少项
int count = 20;
// 调用value赋值方法;和运算方法
//用result()直接接收value(20)返回的数组arr[][]
result(value(20));
}
// 方法value 用于对输入array[][]进行赋值;
// 形参为int count多少项,返回值为array[][];
public static int[][] value(int count) {
// 定义数组arr[][],二维数组每个元素的长度都为2;并且索引为0和1,
// int[count][0]接收分子;int[count][1]接收分母;
int[][] arr = new int[count][2];
// 如果a=1,则结果为2/1
if (count == 1) {
arr[0][0] = 2;// 第一项的分子为2;
arr[0][1] = 1;// 第一项的分母为1;
System.out.println("结果为" + 2);
} else if (count == 2) {
arr[0][0] = 2;// 第一项的分子为2;
arr[0][1] = 1;// 第一项的分母为1;
arr[1][0] = 3;// 第二项的分子为2;
arr[1][1] = 2;// 第二项的分母为1;
System.out.println("结果为" + 3.5);
} else if (count > 2) {
arr[0][0] = 2;// 第一项的分子为2;
arr[0][1] = 1;// 第一项的分母为1;
arr[1][0] = 3;// 第二项的分子为2;
arr[1][1] = 2;// 第二项的分母为1;
for (int x = 3; x < arr.length+1; x++) {
arr[x - 1][0] = arr[x - 2][0] + arr[x - 2][1];// 第三项的分子=前一项的分子+前一项的分母;
arr[x - 1][1] = arr[x - 2][0];// 第三项的分母=前一项 的分子;
}
}
// for(int a=0;a<arr.length;a++){
// System.out.println(arr[a][0]+" "+arr[a][1]);
// }
return arr;
}
// 方法result 计算
// 形参为数组array[][],没有返回值
public static void result(int[][] array) {
// 变量为double类型的sum,用于接收运算结果;
double sum = 0;
// 运算法则是sum+=分子/分母
for (int a = 0; a < array.length; a++) {
// 分子/分母
sum += (array[a][0] * 1.0 )/ (array[a][1]);
}
System.out.println(sum);
} |
|