Java例题_20 前20项之和!

 1 /*20 【程序 20 求前 20 项之和】 
 2 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和。 
 3 程序分析:请抓住分子与分母的变化规律。 
 4 
 5 */
 6 
 7 /*分析
 8  * 前一个数的分子就是后一个数的分母
 9  * 无论分子分母,第三个的值都等于第一个加第二个
10  *     一  二  三  四  五。。。。
11  * 分子    2 3 5 8 13
12  * 分母    1 2 3 5  8 13
13  * ====================
14  * 1、利用找到的规律生成分子和分母分别存入两个不同的数组S[]和M[]
15  * 2、S[0]乘以M[1]存入S[0],再将S[1]和M[1]分别乘以M[0]并分别存入S[1]和M[1],再将S[0]乘以S[1]后存入S[0],则S[0]/M[1]就是钱两项和了
16  * 3、重复以上
17  * */
18 
19 package homework;
20 
21 public class _20 {
22 
23     public static void main(String[] args) {
24         // TODO Auto-generated method stub
25         int s[]=new int[20];   //分子
26         int    m[]=new int[20];   //分母
27         //生成分子分母
28         s[0]=2; s[1]=3;
29         m[0]=1; m[1]=2;
30         for (int i = 2; i < 20; i++) {
31             s[i]=s[i-1]+s[i-2];
32             m[i]=m[i-1]+m[i-2];
33         }
34 //==============测试分子分母的值==========================
35 //        for (int i = 0; i < m.length; i++) {
36 //            System.out.print(s[i]+"\t");
37 //        }
38 //        System.out.println();
39 //        for (int i = 0; i < m.length; i++) {
40 //            System.out.print(m[i]+"\t");
41 //        }
42 //====================================================        
43 
44 //        =====================long类型的范围都不够===查网上发现大家都是用的小数!!!!!! 
45         //分别将每一项通分后相加,并存入s[0]和m[0]中
46 //        for (int i = 1; i < m.length; i++) {
47 //            s[0]=s[0]*m[i]; //分子1
48 //            m[0]=m[0]*m[i]; //分母
49 //            s[i]=s[i]*m[0]; //分子2
50 //            s[0]=s[0]+s[i]; //分子1+分子2
51 //        }
52 //        System.out.println("该数列前20项之和为:"+s[0]+"/"+m[0]);
53 //        
54         double x=(double)s[0]/(double)m[0];
55         for (int i = 1; i < m.length; i++) {
56             x=x+(double)s[i]/(double)m[i];
57 
58         }
59             System.out.printf("%.2f",x);
60 
61     }
62 }

 

posted @ 2020-02-13 21:44  浪漫主义程序员  阅读(565)  评论(0编辑  收藏  举报