迭代次数

时间:2013-09-09 23:16:48

标签: java for-loop

你好,我是Java的初学者,我有一个关于迭代总结的问题。问题是:编写一个程序,计算以下表达式到4位小数: (1/10)+(2/9)+(3/8)+(4/7)+(5/6)+(6/5)+(7/4)+(8/3)+(9 / 2)+(10/1)

到目前为止,我有:

public class Expression
{
    public static void main(String[] args)
    {
        float x;
        for ( float m=1, n=10; m<11; m++,n--)
        {
            x = (m)/(n);
        }

我如何总结for循环所做的所有迭代?

谢谢大家:)

4 个答案:

答案 0 :(得分:2)

public class Expression
{
    public static void main(String[] args)
    {
        float x = 0;
        for ( float m=1, n=10; m<11; m++,n--)
        {
            x += (m)/(n);
        }
    System.out.println(x);
    }
}

答案 1 :(得分:1)

好的代码,我到目前为止都喜欢它!

循环中需要一个变量:sum = sum + x;或更短sum += x;。在循环之前用float sum = 0;定义它。

您也可以直接使用x并将其定义为0,但编译器无论如何都会优化它,因此没有速度增益。

答案 2 :(得分:1)

+=运算符。 x += y相当于x = x + y。在您的情况下,您将获得x += (m)/(n),最终产生:

public class Expression {
  public static void main(String[] args) {           
    float x = 0;

    for ( float m=1, n=10; m<11; m++,n--) {
      x += (m)/(n);
    }
  }
}

答案 3 :(得分:1)

更改

 x = (m)/(n);

x += (m)/(n);

由于x已经在循环之外的范围内,因此可以执行此操作,并且x将在迭代之间保持不变。不过我建议更改循环:

float x=0;
for ( float m=1; m<11; m++)
  {
     x += (m)/(11-m);
  }

将来阅读可能会更直接。