Scala中的简单表达式的非法开始(Fibonacci函数)

时间:2017-08-24 03:18:25

标签: scala

我在这段代码中只剩下一个错误,当我设置一个等于函数的变量时,我认为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
  }
}

1 个答案:

答案 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会很好。