编写一个接受整数参数n并返回序列前n个项之和的方法

时间:2019-02-09 22:05:01

标签: java

∑i = 1n1i

换句话说,该方法应生成以下序列:

1+12+13+14+15+⋯

我已经为这个问题感到困惑了很多。很难过的时候了解方程中的“ n”代表什么,并将其应用于我的for循环。

for循环是否可以解决此问题?还是我应该只使用一个公式然后以某种方式解决它?

       public static void main(String[] args) {
//Chapter 4 Exercise 1
        System.out.println("--Chapter 4, Exercise 1");
        System.out.println("How many integers do you want?:");
        Scanner console = new Scanner(System.in);
        int numb = console.nextInt();
        fractionSum(numb)


 public static double fractionSum(int numb) {
      for(int i = 1; i <numb; i++) {
           if (i !=1)
               System.out.print("1 + 1" + i);
           else
               System.out.print("1");
        }
        return(numb);
    }

1+12+13+14+15+⋯

应该是输出。

我的输出显示为:

11 + 121 + 131 + 141 + 15

2 个答案:

答案 0 :(得分:0)

回答问题的第一部分:

∑i = 1n1i被称为谐波和-您在问题中给出的输出是错误的,谐波和可以描述为正整数的倒数之和-例如:< / p>

H1 = 1
H2 = 1 + 1/2 = 1.5
H3 = 1 + 1/2 + 1/3 = 1.8333
H4 = 1 + 1/2 + 1/3 + 1/4 = 2.0833
H(n) = 1 + 1/2 + 1/3 + 1/4 ... + 1/n = answer ---> see what n is now?

您应该为此使用for循环,它不是很复杂。希望这个答案可以为您解决任务(我假设第4章练习1中的作业),您可以重试。

答案 1 :(得分:0)

这里:

class Harmonic {
    public static void main(String… s) {
        int n, i;
        float sum = 0;

        n = Integer.parseInt(s[0]);

        for (i = 1; i <= n; i++) {
            sum = sum + (float) 1 / i;
        }

        System.out.println(“nSum = ”+sum);
    }
}