我有一個關於斯卡拉尾遞歸的問題。我寫了一個簡單的尾遞歸代碼,它接受一個列表並創建一個新的偶數列表。但由於scala無法將元素附加到列表中,我的列表按降序排列。下面是代碼斯卡拉的尾遞歸
def listCreator(lists: List[Int]): List[Int] = {
@tailrec
def evenListCreator(lists: List[Int], accum: List[Int]): List[Int] = {
lists match {
case Nil => accum
case x :: Nil if (isEven (x) == true) => x :: accum
case x :: Nil if (isEven (x) == false) => accum
case x :: tail if (isEven (x) == true) => evenListCreator(tail, x :: accum)
case x :: tail if (isEven (x) == false) => evenListCreator(tail, accum)
}
}
evenListCreator(lists, List())
}
我有以下幾個問題
我如何可以添加逆轉這種方法中的列表中的語句?
這條線
evenListCreator(lists, List())
緊跟在方法調用之後,它是強制的尾遞歸嗎?
'VECTOR'是不可改變的,但有相當有效的追加,你可以使用它來代替List' –