1

我很难将以下两个用数学符号编写的函数转录成 Java 代码(两个函数的输入都是一个带有 D 元素的数组):

在此处输入图像描述

有人可以看看下面的代码并告诉我它是否有问题?

public double firstFunction(double[] arrayOfElements) {

double sum = 0;
double sumTwo = 0;

for(int i = 0; i < arrayOfElements.length; i++) {
    for(int j = 0; j < i; j++){
        sumTwo = sumTwo + arrayOfElements[j];
    }
    sum = sum + Math.pow(sumTwo, 2);
    }
    return sum;
}

public double secondFunction(double[] arrayOfElements) {
    double maximum = Math.abs(arrayOfElements[0]);
    for (int i = 0; i < arrayOfElements.length; i++) {
        if (Math.abs(arrayOfElements[i]) > maximum) {
            maximum = Math.abs(arrayOfElements[i]); 
        }
    }
    return maximum;
}
4

1 回答 1

1

第一种方法应sumTwo在每次迭代中重置为零。目前,它从外循环的一次执行累积值到下一次执行。否则没关系。

或者,更有效的是,您可能会注意到sumTwo一次迭代和下一次迭代之间的差异是新的数组元素。这意味着您不需要内部循环。

for(int i = 0; i < arrayOfElements.length; i++) {
    sumTwo = sumTwo + arrayOfElements[j];
    sum = sum + Math.pow(sumTwo, 2);
}

第二种方法应该返回具有最大绝对值的元素的索引,而不是元素本身。注意最大的子索引i

于 2013-05-31T16:29:13.423 回答