【发布时间】:2018-06-08 03:32:29
【问题描述】:
我正在尝试用下面的方式写一个尾递归函数,但是编译器抛出了一个错误:
方法应用的参数过多:(v1: Int)Int in trait Function1 否则阶乘(x-1, x*acc)
我曾尝试用 Function2 替换 Function1 并给出 Function2[Int, Int, Int] = new Function2[Int, Int, Int]
但它仍然给我同样的错误。有人能指出我哪里出错了吗?
import scala.annotation.tailrec
var factorial: Function1[Int, Int] = new Function1[Int, Int] {
@tailrec override def apply (x:Int, acc:Int=1): Int = {
if (x<=1) acc
else factorial(x-1, x*acc)
}
}
factorial(5)
【问题讨论】:
标签: scala function recursion functional-programming tail-recursion