This question already has an answer here:
def fibSeq(n: Int): List[Int] = {
var ret = scala.collection.mutable.ListBuffer[Int](1, 2)
while (ret(ret.length - 1) < n) {
val temp = ret(ret.length - 1) + ret(ret.length - 2)
if (temp >= n) {
return ret.toList
}
ret += temp
}
ret.toList
}
So the above is my code to generate a Fibonacci sequence using Scala to a value n
. I am wondering if there is a more elegant way to do this in Scala?
This is a bit more elegant:
With Streams you "take" a number of values, which you can then turn into a List:
Update: I've written a blog post which goes more detail regarding how this solution works, and why you end up with a Fibonacci sequence!