我在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)以1为增量步长,从startInclusive(包括)返回到endExclusive(不包含)的顺序有序IntStream.
所以我可以用它来提供IntStream的数字范围来乘以计算阶乘.
number = 5;
IntStream.range(1, number)
Run Code Online (Sandbox Code Playgroud)
但如何将这些数字相乘得到阶乘?
Suf*_*ori 13
你可以使用IntStream :: reduce来完成这项工作,
int number = 5;
IntStream.rangeClosed(2, number).reduce(1, (x, y) -> x * y)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4882 次 |
| 最近记录: |