题目是这样:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 我写的程序是,可能我的算法错了,我自己做了好久都没有做出来,所以请高手赐教。。public class HomeWork4
{
public static void main(String[] args)
{
int a=1,b=2;
int temp=0;
int sum=0;
for(int i=1;i<=20;i++)
{
sum=sum+b/a;
temp=b;
b=a+b;
a=temp;
i++;
} System.out.println(sum);
}
}

解决方案 »

  1.   

    2个int相除的结果是取整的(不是四舍五入,而是直接取整数舍弃小数)。
    把几个变量改成float吧
      

  2.   

    那我这个题目 作对了吗? 把int改成double之后 ,帮我看看
      

  3.   

    public class HomeWork4
    {
    public static void main(String[] args)
    {
    double a=1,b=2;
    double temp=0;
    double sum=0;
    for(int i=1;i<=20;i++)
    {
    sum=sum+b/a;
    temp=b;
    b=a+b;
    a=temp;
    i++;
    } System.out.println(sum);
    }
    }
      

  4.   

    还有循环for(...i++)和循环体中i++重复了,删一个好了
      

  5.   


    package com.biao;import java.io.IOException;public class Test {
        public static void main(String[] args) throws IOException {
            // 2/1,3/2,5/3,8/5,13/8,21/13
            float a = 2, b = 1, sum = 0;
            final int times = 20;
            
            float temp = 0;
            for (int i = 0; i < times; ++i) {
                sum += a / b;
                temp = a;
                a += b;
                b = temp;
            }        System.out.println(sum);
        }
    }
      

  6.   

    for 循环里面的次数 请各位给我详细解释下,搞糊涂了 不知道该循环几次?
      

  7.   

    没什么大问题,花括号里面的i++多余,看看temp,它作为中间变量,不需要赋初值。
    i如果大于20,循环结束,
      

  8.   

    public class Test2{

    public static void main(String []args){
    int a=1,b=2,temp=0;
    int sum1=a,sum2=b;
    for(int i=1;i<20;i++){
    temp=b;
    b=a+b;
    a=temp;
    sum1=sum1*a;
    }
    a=1;b=2;temp=0;
    for(int i=1;i<20;i++){
    temp=b;
    b=a+b;
    a=temp;
    sum2=sum2+b*sum1/a;
    }
    System.out.println(sum2/sum1); }
    }
      

  9.   

    用duoble型的还是会损失精度!
      

  10.   

    修改为
    public class HomeWork4
    {
    public static void main(String[] args)
    {
    double a=1,b=2;
    double temp=0;
    double sum=0;
    for(int i=1;i<=20;i++)
    {
    sum=(double)sum+b/a;
    temp=b;
    b=a+b;
    a=temp;
    }
    System.out.println(sum);
    }
    }