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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 完美恋爱 高级黑马   /  2013-11-8 15:45  /  957 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 完美恋爱 于 2013-11-8 19:42 编辑

22、有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,……
        求出这个数列的前20项之和。
class ABC{                            public static void main(String[] args)      
                    {               
                                   int a = 2;               
                                   int b = 1;                                
                                   int p = 0;               
                                   int q = 0;                                
                                   double sum = a/b;                              
                                   for(int i = 1; i <= 18; i++)               
                                   {                        
                                                p = a + b;                       
                                                q = a;                                                      
                                                sum = sum + p/q;               
                                  }                              

                                  System.out.println("sum = "+sum);        
                   }
}


请问我编写的代码哪里有错误了,为什么得数跟我用计算器加的数不一样呢?



评分

参与人数 1黑马币 +3 收起 理由
乔兵 + 3

查看全部评分

2 个回复

倒序浏览
你可以先试着求前三项或者前五项之和,
你用计算器加二十项觉得会出错的
因为计算器会将结果进行精度处理的。
  1. public static void main(String[]args){
  2.         int b = 2;
  3.         int a = 1;
  4.         double sum = 0;
  5.         for(int i = 0;i < 20;i++){
  6.             if(i%5 == 0){
  7.                 System.out.println();
  8.                 System.out.print(b+"/"+a+"+");
  9.                 int temp = 0;
  10.                 sum += b/a;
  11.                 temp = a;
  12.                 a = b;
  13.                 b = temp + b;
  14.             }else if(i == 19){
  15.                 System.out.print(b+"/"+a+"=");
  16.                 int temp = 0;
  17.                 sum += b/a;
  18.                 temp = a;
  19.                 a = b;
  20.                 b = temp + b;
  21.             }else{
  22.                 System.out.print(b+"/"+a+"+");
  23.                 int temp = 0;
  24.                 sum += b/a;
  25.                 temp = a;
  26.                 a = b;
  27.                 b = temp + b;
  28.             }
  29.         }
  30.         System.out.println(sum);
  31.     }
  32. }
复制代码
回复 使用道具 举报
21/13 这些数算出来的是1啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马