gpt4 book ai didi

scala - 递归调用不在尾部位置

转载 作者:行者123 更新时间:2023-12-04 14:26:37 24 4
gpt4 key购买 nike

假设我定义了以下函数:

final def myFunc[T](list: List[T]): List[T] = list match {
case h :: t =>
h :: myFunc(t)
case _ =>
Nil
}

当我添加 tailrec 注释时,编译器给了我以下错误:

could not optimize @tailrec annotated method myFunc: it contains a recursive call not in tail position: ^Nil.



我对 Nil 的声明如何成为递归调用感到困惑?

最佳答案

问题不在于 Nil但与 h :: myFunc(t)因为 myFunc(t)不是最后一个电话。最后一个电话是给运算符(operator) ::关于 myFunc(t) 的结果.这就是函数不是尾递归的原因。

关于scala - 递归调用不在尾部位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30508800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com