2017-08-24 13 views
0

このコードでは、関数に等しい変数を設定すると1つのエラーが残っています。私がなぜ単純な式の不正な開始エラーを起こしているのか誰にでも教えてもらえますか?また、このコードをどのように簡略化することができるかについての提案もあります。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

btwは、fibinacciではなく、fibinacciです。 –

答えて

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 
} 

は、その後、あなたはScalaの

val finalResult: ListBuffer[Int] = finish(len, y, z, result) 

関数を呼び出すには何ですが、型にはまりません。関数の記述と呼び出しについて学んだのと同じテクニックを使用してください。スケーラはうまくいくでしょう。

+1

魅力的です。どうもありがとうございました! – wayneeusa

関連する問題