我对 Java 8 和 lambda 表达式比较陌生Stream
,我可以使用计算阶乘for
循环或递归。但有没有办法使用IntStream
计算一个数的阶乘?即使阶乘在整数范围内我也很好。
我通读了IntStream
文档在这里,http://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.html我可以看到很多方法,但不确定可以使用哪一种来计算阶乘。
例如,有rang
方法说,
range(int startInclusive, int endExclusive) 返回一个顺序
有序 IntStream 从 startInclusive(包含)到 endExclusive
(不包括)增量步长为 1。
因此我可以使用它向 IntStream 提供要相乘以计算阶乘的数字范围。
number = 5;
IntStream.range(1, number)
但如何将这些数字相乘以获得阶乘呢?
您可以使用IntStream::减少为了这份工作,
int number = 5;
IntStream.rangeClosed(2, number).reduce(1, (x, y) -> x * y)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)