【发布时间】:2018-03-17 20:07:17
【问题描述】:
这可能是一个奇怪的问题,但是......
问题: 如何将 Scala 中的 tail-recursive 函数转换为 non-tail-recursive 解决方案?
注意:我知道尾递归解决方案在 Scala 中很棒,但我被要求将其更改为非尾递归解决方案。我不知道该怎么做
我在这里有一个尾递归解决方案的代码(至少我希望它是尾递归的,哈哈)
def cubesTailRecur(a: List[Int], acc: List[Int] = List.empty): List[Int] = {
a match {
case Nil => acc
case h :: t if (h%2 == 0) => cubesTailRecur(t, acc)
case h :: t => cubesTailRecur(t, acc :+ Math.pow(h, 3).toInt)
}
}
我的函数所做的是遍历给定的整数列表并返回一个包含所有奇数立方的新数组。
示例:
println(cubesTailRecur(List(1, 2, 3, 4, 5, 6, 7)))
// OUTPUT
// List(1, 27, 125, 343)
【问题讨论】: