最简单的解决方案是使用
Pairs 流:
Stream.iterate(new long[]{ 1, 1 }, p->new long[]{ p[1], p[0]+p[1] }) .limit(92).forEach(p->System.out.println(p[0]));由于缺少标准对类型,因此使用了两个元素的数组。此外,
.limit(92)由于无法使用
long值来评估更多元素,因此我使用。但是很容易适应
BigInteger:
Stream.iterate(new BigInteger[]{ BigInteger.ONE, BigInteger.ONE }, p->new BigInteger[]{ p[1], p[0].add(p[1]) }) .forEach(p->System.out.println(p[0]));它将一直运行,直到您没有足够的内存来表示下一个值。
顺便说一句,要从流中获取第n个元素:
Stream.iterate(new long[]{1, 1}, p -> new long[]{p[1], p[0] + p[1]}) .limit(91).skip(90).findFirst().get()[1];


