斐波拉契数列(Lambda表达式)

package top.dj.test;

import java.math.BigInteger;
import java.util.stream.LongStream;
import java.util.stream.Stream;

/**
 * @Author DengJia
 * @Date 2021/7/30 10:19
 * @Description 斐波拉契数列
 */

public class FibonacciSequence {
    static long a = 0, b = 1;

    static BigInteger preInt = new BigInteger("0");
    static BigInteger nextInt = new BigInteger("1");

    public static void main(String[] args) {
        /* Integer,Long 数据类型长度有限,会溢出 */
        fibonacciLongStream();

        /* BigInteger 使用麻烦一点,但不会有溢出问题 */
        fibonacciBigInteger();
    }

    public static void fibonacciLongStream() {
        LongStream.generate(() -> {
            long tmp = a;
            a = b;
            b += tmp;
            return a;
        }).limit(100).forEach(System.out::println);
    }

    public static void fibonacciBigInteger() {
        Stream.generate(() -> {
            BigInteger tmp = preInt;
            preInt = nextInt;
            nextInt = nextInt.add(tmp);
            return preInt;
        }).limit(200).forEach(System.out::println);
    }
}
DJOSIMON
原文地址:https://www.cnblogs.com/DJOSIMON/p/15078483.html