Kiran Muralee - 1 month ago 8x
Java Question

# Java 8 Lambda expressions for solving fibonacci (non recursive way)

I am a beginner in using Lambda expression feature in Java 8. Lambda expressions are pretty well useful in solving programs like Prime number check, factorial etc.

However can they be utilized effectively in solving problems like Fibonacci where the current value depends on sum of previous two values. I have pretty well solved prime number check problem effectively using Lambda expressions. The code for the same is given below.

``````boolean checkPrime=n>1 && LongStream.range(2, (long) Math.sqrt(n)).parallel().noneMatch(e->(n)%e==0);
``````

In the above code in the
`noneMatch`
method we are evaluating with the current value(
`e`
) in the range. But for the Fibonacci problem, we requires previous two values.

How can we make it happen?

The simplest solution is to use a stream of `Pair`s:

``````Stream.iterate(new long[]{ 1, 1 }, p->new long[]{ p[1], p[0]+p[1] })
.limit(92).forEach(p->System.out.println(p[0]));
``````

Due to the lack of a standard pair type, it uses a two-element array. Further, I use `.limit(92)` as we can’t evaluate more elements using `long` values. But it’s easy to adapt to `BigInteger`:

``````Stream.iterate(new BigInteger[]{ BigInteger.ONE, BigInteger.ONE },