Scala 尾递归

标签 scala pattern-matching tail-recursion

我在 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/

相关文章:

performance - 在 OCaml 模式匹配中哪个更好, `when` 或 `if-then-else` ?

Java尾递归: Is below Fibonacci code tail recursive ?

java - Scala - super 的中缀运算符不能称为中缀

java - AWS ElasticSearchService - Java SDK 示例?

mongodb - Scala MongoDB,重写编解码器以写入/读取数组[字节]

scala - 如何从 Scala 代码读取 HDFS 文件

generics - scala 类型匹配

scala - 我如何根据 Scala 中的模式匹配在 map 中找到一个键

python - 我的快速排序因大小为 2^13 的列表而挂起

.net - F#尾递归调用