ITMISS
使用流 api,这非常容易斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55....该数列的前两个数是0和1,后面的每个数都是前一个数的和二。斐波那契元组的系列是相似的;你有一个数字序列及其在系列中的后继者:(0, 1), (1, 1), (1, 2), (2, 3), (3, 5), (5, 8), (8, 13), (13, 21)....iterate 需要一个 lambda 来指定后继元素。在元组 (3, 5) 的情况下,后继是 (5, 3+5) = (5, 8)。下一个是 (8, 5+8)。你能看到图案吗?给定一个元组,后继是 (t[1], t[0] + t[1])。这是以下 lambda 指定的内容:t -> new int[]{t[1],t[0] + t[1]}。通过运行此代码,您将获得系列 (0, 1), (1, 1), (1, 2), (2, 3), (3, 5), (5, 8), (8, 13 ), (13, 21).... 请注意,如果您只想打印普通的斐波那契数列,您可以使用映射来仅提取每个元组的第一个元素:Stream.iterate(new long[]{0, 1}, t -> new long[]{t[1], t[0] + t[1]})
.limit(10)
.map(t -> t[0])
.forEach(System.out::println);这是流 api:https ://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html