scala - 在 Scala 中生成斐波那契数列

标签 scala sequence list-comprehension fibonacci

这个问题在这里已经有了答案:





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/

相关文章:

scala - 激活程序: Play Framework 2. 3.x : run vs.开始

java - 如何在java中使用递归反转数字序列

python - 如何根据序列中的大写字母提取起始和结束位点?

python - 比较 python 中 Gigantic Two Dimen 列表中一个列表的值,最快的方法?

python - 设置字符串而系列是 bool 值?

scala - 对于在 Scala 中使用默认参数的方法,Mockito 验证失败,错误为 "TooManyActualInvocations"

Scala 功能组合

scala - 由于id没有更新,所以twitter4j

Hibernate,由父表中的序列生成的外键的映射

python - python中的列表列表?