生成系列并显示1 * 3 * 5 + 2 * 5 * 8 + 3 * 7 * 11的总和

问题描述 投票:2回答:4

使用Java生成系列,

1*3*5 + 2*5*8 + 3*7*11......

并显示总和。

我试过这种方式,但没有奏效。有没有更好的算法来生成这个系列?

    public static void main(String[] args) {


     int sum1 = 1;
     int sum2 = 0;
     int sum3 = 0;
     int num = 0;;
     for(int i=1; i<5; i++) {
         for(int j=1; j<3; j++) {
             for(int k=1; k <= i+1; k++) {

                 num++;
             }

             sum1 *= num; 
         }

         sum2 += sum1; 
     }
}
java loops
4个回答
7
投票

由于您需要生成一系列N个元素的总和,因此您只需要一个循环(不需要嵌套循环)。

您应该注意到系列的元素可以计算为:

Element(1) = 1 * 3 * 5
...
Element(i) = i * j * k
Element(i+1) = (i+1) + (j+2) * (k+3)

因此,您可以使用3个变量来计算要添加到总和中的当前元素。

int sum = 0;
int j = 3;
int k = 5;
for(int i = 1; i <= N; i++) {
    sum += i * j * k;  
    j+=2;
    k+=3;
}

要么

int sum = 0;
for(int i = 1, j = 3, k = 5; i <= N; i++, j+=2, k+=3) {
    sum += i * j * k;  
}

2
投票

您可以尝试下一个简单的代码

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int sum1 = 0;
     int sum2 = 0;
     int sum3 = 0;
     int num = 0;
     int series = 10;
     int result = 0;
     for(int i=1; i<series; i++){
        sum1 = i;
        sum2 = sum1+sum1+1;
        sum3 = sum2+sum1+1;
        System.out.print(sum1+"*"+sum2+"*"+sum3+"+");
        result += sum1 * sum2 * 3;
     }
     System.out.print("Final result: "+result);
}

1
投票

你应该可以在这样的循环中完成它

public static void main(String args[]){
    int first = 1;
    int second = 3;
    int third = 5;
    int n = 5;
    int sum  = 0;
    for(int i=0;i<n;i++){
        sum+=first*second*third;
        first++;
        second+=2;
        third+=3;
    }
}

0
投票
for (i = 1; i <= limit; i++) {
    sum += (i * (i+i+1) * (i+i+i+2))
}

我假设这个逻辑:

1 : [1] * ([1] + 2) * (([1] + 2) + 2)

2 : [2] * ([2] + 3) * (([2] + 3) + 3)

3 : [3] * ([3] + 4) * (([3] + 4) + 4)

.

.

.

© www.soinside.com 2019 - 2024. All rights reserved.