在不使用java中的循环的情况下添加double []数组的元素

Nam*_*lak 4 java

我有一个巨大的双[].(例如:例如.double[] array = new double[] {2.0, 3.1, 4.2, 8.9, 10.11, ........})

我想一次得到该数组的所有元素的总和.(不使用循环).

你有任何想法吗?

And*_*s_D 10

不,您无法在一个步骤中计算值列表的总和.即使有一个API方法或某个提供sum函数的库,它也会在内部使用循环.求和算法的复杂性是O(n)(对于单CPU).

一个出路可能是使用并行计算,但这是一个回答你的问题的理论方法.您至少需要与阵列单元一样多的CPU来计算步骤中的总和.(或者一个虚拟CPU,其FP寄存器数量与数组值一样多).


在开始查看Java或其他库的API之前:

 public static double sum(double...values) {
   double result = 0;
   for (double value:values)
     result += value;
   return result;
 }
Run Code Online (Sandbox Code Playgroud)

用法:

 double sum = sum(array);  // this is in your main code -> no loop (visible)
Run Code Online (Sandbox Code Playgroud)


pax*_*blo 9

是的,使用循环.这就是他们的目的.数百个元素是阵列的小尺寸,几乎没有时间处理.


小智 6

在 Java 8 中:

Arrays.stream(array).sum();
Run Code Online (Sandbox Code Playgroud)

如果你想在多个 CPU 上并行:

Arrays.stream(array).parallel().sum();
Run Code Online (Sandbox Code Playgroud)