A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 龙哮天 中级黑马   /  2017-3-30 22:02  /  1561 人查看  /  4 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
* 序列: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);
        }

4 个回复

倒序浏览
这都是神马
回复 使用道具 举报
回复 使用道具 举报
你要学会分析  前一项的分子分母的和是下一项的分子  前一项的分子是下一项的分母
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
前一项的分子分母的和是下一项的分子  前一项的分子是下一项的分母
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马