小编Vas*_*asu的帖子

在 Scala 中编写阶乘尾递归函数

我正在尝试以下面的方式编写尾递归函数,但编译器抛出错误:

方法的参数太多了:(v1: Int)Int in trait Function1 else factorial(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)
Run Code Online (Sandbox Code Playgroud)

recursion functional-programming scala tail-recursion function

5
推荐指数
1
解决办法
3831
查看次数