【发布时间】:2017-04-29 03:06:29
【问题描述】:
我有一个对象,我们称它为 RT,它有两个字段:一个字符串和一个自身的 List。
def case class RT[String](topic: String, children: List[RT[String]])
现在我有了以下递归函数:
def func(tree: RT[String]): List[String] = {
tree.children match {
case Nil=> List(tree.topic)
case child =>
val subTrees = child.map(rt => func(rt))
subTrees.foldLeft(List(tree.topic))((acc,list) => acc ::: list ::: List(tree.topic))
}
}
这让我得到了我想要的。但是,在非常嵌套的情况下,我得到了一个 StackOverflow,所以我希望将前面的函数转换成它的尾递归形式。但是,我看不出如何。有可能吗?
【问题讨论】:
-
虽然您的问题在技术上不是重复的,但如果您阅读过this question,您就不需要问了。
-
@Malvolio 仍然没有解决我的问题。
标签: scala recursion tail-recursion map-function