最佳答案
使用 Java 8 时只有一行代码:
public class GCD {
public static void main(String[] args) {
int[] ints = { 42, 21, 14, 70 };
System.out.println(gcd(ints));
}
public static int gcd(int[] ints) {
return Arrays.stream(ints).reduce((a, b) -> gcd(a, b)).getAsInt();
}
public static int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
}
输出为“7”。聚合函数称为缩减。
备选方案:lambda 也可以用方法引用来编写。
public static int gcd(int[] ints) {
return Arrays.stream(ints).reduce(GCD::gcd).getAsInt();
}
关于java - 是否有与 C# 的 .Aggregate(foo) 方法等效的 java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24948997/