0
這可能是一個奇怪的問題,但...斯卡拉尾遞歸爲未尾遞歸
問: 如何打開一個尾遞歸功能斯卡拉成非尾遞歸解決方案?
注意:我知道尾部遞歸解決方案在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)
這有效,但有一個問題。它以相反的順序打印列表。例如:列表(1,27,125,343)與列表(343,125,27,1) – Phillip
如何反轉?編輯:如何在功能中將其反轉。我知道如何在印刷時反轉 – Phillip
你可以使用'Math.pow(h,3).toInt :: cubesRec(t)' – lztachyon