-2
scala> var ard=new Array[Int](25)
ard: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
scala> ard(0)=0
scala> ard(1)=1
scala> def fibi(X:Int):Int = X match{
case 0 =>0
case 1 =>1
case _ => {
if (ard(X)!=0)
{
return ard(X)
}
else
{
return ard(X)=fibi(X-1)+fibi(X-2)
}
}
}
<console>:19: error: type mismatch;
found : Unit
required: Int
return ard(X)=fibi(X-1)+fibi(X-2)
我正在獲取錯誤不匹配時,我嘗試分配ARD(X)= FIBI(X-1)+ FIBI(X-2),因爲FIBI返回一個INT爲什麼我會收到類型錯誤遞歸函數Scala中返回,而不是INT一個單位
「使用@tailrec註釋防止堆棧增長」。無論您是否有此註釋,編譯器都會將其編譯爲尾遞歸。當函數變爲非尾遞歸時,註釋會導致錯誤。 –
@TheArchetypalPaul謝謝!我不知道,但這是件好事。 –