【发布时间】:2017-01-21 19:31:51
【问题描述】:
我刚刚开始学习 Scala 和函数式编程,我正在尝试将以下内容从 Python 转换为 Scala:
def immutable_iterative_fibonacci(position):
if (position ==1):
return [1]
if (position == 2):
return [1,1]
next_series = lambda series, _: series + [series [-1] + series [-2]]
return reduce(next_series, range(position - 2), [1, 1])
我不知道 Scala 中 reduce 的等价物是什么。这是我目前拥有的。除了最后一行,一切正常。
def immutable_fibonacci(position: Int) : ArrayBuffer[Int] = {
if (position == 1){
return ArrayBuffer(1)
}
if (position == 2){
return ArrayBuffer(1,1)
}
var next_series = (series: ArrayBuffer[Int]) => series :+ ( series( series.size - 1) + series( series.size -2))
return reduce(next_series, 2 to position, ArrayBuffer(1,1))
}
【问题讨论】:
-
最后一行有什么问题?您是否收到编译器错误(如果是,它是什么)、不正确的结果(如果是,它们是什么以及它们为什么错误)、运行时错误(如果是,它是什么),...?
标签: python scala lambda functional-programming reduce