这个问题在这里已经有了答案:
What is the fastest way to write Fibonacci function in Scala?
(8 个回答)
4年前关闭。
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
}
所以上面是我使用 Scala 生成斐波那契数列的代码 n
.我想知道在 Scala 中是否有更优雅的方法来做到这一点?
最佳答案
我最喜欢的版本是:
def fibs(a: Int = 0, b: Int = 1): Stream[Int] = Stream.cons(a, fibs(b, a+b))
使用默认值,您只需调用
fibs()
并获得无限Stream
.我也认为尽管它是单行的,但它的可读性很高。
如果你只想要第一个
n
那么你可以使用take
喜欢 fibs() take n
, 如果您需要它作为列表 fibs() take n toList
.
关于scala - 在 Scala 中生成斐波那契数列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864497/