我在这段代码中只剩下一个错误,当我设置一个等于函数的变量时,我认为Scala中常见的东西。任何人都可以告诉我为什么我得到一个非法的简单表达错误开始?另外,请提供关于如何简化此代码的建议。
import scala.collection.mutable.ListBuffer
object FibFunction {
def main(args: Array[String]): Unit = {
println(fibinacci(10))
}
def fibinacci(start: Int): ListBuffer[Int] = {
val x = 0
val y = 1
var z = x + y
val result: ListBuffer[Int] = new ListBuffer[Int]
var len = start - 3
result += 0
result += 1
result += z
val finalResult: ListBuffer[Int] = def finish(len: Int, y: Int, z: Int, resultList: ListBuffer[Int] = result): ListBuffer[Int] = {
var iter2: Int = len
var newnum = 0
var first = y
val second = z
if (iter2 <= 0) return resultList;
else {
iter2 -= 1;
newnum = first + second;
resultList += newnum;
finish(iter2, second, newnum, resultList)
}
return resultList
}
finalResult
}
}
答案 0 :(得分:0)
这不是你得到函数结果的方式。
def finish(len: Int, y: Int, z: Int, resultList: ListBuffer[Int]): ListBuffer[Int] = {
var iter2: Int = len
var newnum = 0
var first = y
val second = z
if (iter2 > 0) {
iter2 -= 1;
newnum = first + second;
resultList += newnum;
finish(iter2, second, newnum, resultList)
}
resultList
}
val finalResult: ListBuffer[Int] = finish(len, y, z, result)
斯卡拉是什么,但非常规。使用与学习编写和调用函数相同的技术,scala会很好。