-2
私はARD(X)を割り当てるしようとすると、私はエラーのミスマッチを取得取得しています
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)
がFIBIを=(X-1)+ FIBI(X-2)FIBIが戻っているので、 INTなぜ型エラーが発生するのですか?再帰関数はScalaで代わりにINTの単位を返し
"@tailrecアノテーションでスタックが成長するのを防ぐ"コンパイラは、この注釈を持っているかどうかにかかわらず、末尾再帰としてコンパイルします。注釈は、関数が非末尾再帰であることが判明したときにエラーを引き起こすことです。 –
@TheArchetypalPaulありがとう!私はそれを知らなかったが、それは良いことだ。 –