我在 Scala 中有一个函数,我想知道是否可以将其制成尾递归函数。
def get_f(f: Int => Int, x: Int, y: Int): Int = x match {
case 0 => y
case _ => f(get_f(f, x - 1, y))
}
最佳答案
我看到这个功能适用 f
递归结果的函数,x
次。与将其应用于 y
相同, x
次。另外我建议你使用 if else
而不是模式匹配。
@tailrec
def get_f(f: Int => Int, x: Int, y: Int): Int =
if(x == 0) y
else get_f(f, x - 1, f(y))
添加
@tailrec
注释以确保它是尾递归的
关于Scala 尾递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40997732/