如何在 Java 中使用 lambda 表示式實現 Fibonacci 數列?


Fibonacci 是一個數字序列,其中每個數字(前兩個數字除外)都是前兩個數字的和,例如0、1、1、2、3、5、8、13、21等。Fibonacci 數字序列的定義為:“F(n)=F(n-1)+F(n-2)”。

在以下示例中,我們可以藉助StreamAPIlambda表示式來實現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]

更新於: 2020 年 7 月 13 日

3K+ 檢視

啟動您的 事業

完成課程即可獲得認證

開始使用
廣告