如何在 Java 中使用 lambda 表示式實現 Fibonacci 數列?
Fibonacci 是一個數字序列,其中每個數字(前兩個數字除外)都是前兩個數字的和,例如0、1、1、2、3、5、8、13、21等。Fibonacci 數字序列的定義為:“F(n)=F(n-1)+F(n-2)”。
在以下示例中,我們可以藉助StreamAPI 和lambda表示式來實現Fibonacci 數列。Stream.iterate() 方法返回一個無限的有序序列,該序列由對初始元素種子應用函式迭代得到,生成一個包含種子、f(種子)、f(f(種子)) 等等的流。
示例
import java.util.List; import java.util.stream.*; public class FibonacciTest { public static void main(String args[]) { System.out.println(FibonacciTest.generate(10)); } public static List generate(int series) { return Stream.iterate(new int[]{0, 1}, s -> new int[]{s[1], s[0] + s[1]}) // lambda expression .limit(series) .map(n -> n[0]) .collect(Collectors.toList()); } }
輸出
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
廣告