我正在为一个类做一个赋值,我的函数应该返回一个斐波那契序列直到给定的位置。我试图在第三种情况下减少我的代码。
object FibonacciSeries{
def fibrec(pos: Int, list: List[Int] = List() ):List[Int] = pos match {
case 0 => List(0)
case 1 => List(0,1)
case _ => {
var seq= fibrec(pos - 1 , list)
seq :+ seq.takeRight(2).sum
}
}
}
我想以这样的方式进行,即只调用递归函数一次,并且也适合一行。我希望能做类似的事情。
fibrec(pos -1, list).takeRight(2).sum.append
但我知道不行。任何帮助表示赞赏
答案 0 :(得分:2)
@Aivean给出的链接提供了一些实现Fibonacci流的好方法。然而,这个是我遇到的最简洁的。
val fib: Stream[Int] = 0 #:: fib.scan(1)(_+_)