-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谢谢!我不知道,但这是件好事。 –