我正在编写一个代码来计算斐波那契数。使用此代码,我可以生成斐波那契数列的前 n 个数字。
Stream.generate(new Supplier<Long>() {
private long n1 = 1;
private long n2 = 2;
@Override
public Long get() {
long fibonacci = n1;
long n3 = n2 + n1;
n1 = n2;
n2 = n3;
return fibonacci;
}
}).limit(50).forEach(System.out::println);
该方法limit
返回Stream
保存传递给此方法的元素数。我想Stream
在斐波那契数达到某个值后停止生成。
我的意思是,如果我想列出所有小于 1000 的斐波那契数,那么我不能使用limit
,因为我不知道可能有多少斐波那契数。
有没有办法使用 lambda 表达式来做到这一点?