1. 程式人生 > >用Java8的IntStream生成斐波那契數列

用Java8的IntStream生成斐波那契數列

IntStreamJava8中提供的一個介面,利用它我們可以寫一個生成斐波那契數列的幫助類。在這裡,我假定數列從1開始。

import java.util.Arrays;
import java.util.function.IntUnaryOperator;
import java.util.stream.IntStream;

public class Utility {

	public static IntStream generateFibonacciSequence() {
		return IntStream.iterate(1, new IntUnaryOperator() {

			private int prev = 0;

			@Override
			public int applyAsInt(int operand) {
				int temp = operand + prev;
				prev = operand;
				return temp;
			}
		});
	}

	public static void main(String[] args) {
		// 生成前20項斐波那契數列
		// [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597,
		// 2584, 4181, 6765]
		System.out.println(Arrays.toString(Utility.generateFibonacciSequence().limit(20).toArray()));
	}

}