我正在编写一个计算斐波纳契数字的代码。通过这段代码,我可以生成前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表达式来做到这一点?
啊我真的不能叫'System.exit' :-( –
我不喜欢我使用System.exit方式(0);在这里,但它确实完成了工作 –
好吧,我们组合了一个极限,我们知道它已经结束了,只是控制了打印的数量,我不知道其他方式来设置结束到一个威胁(新的java8) –