這裏是我的功能:這個函數可以被認爲是尾遞歸嗎?
//Data Structures :
abstract class HuffmanTree
case class Node(left: HuffmanTree, right: HuffmanTree, chars: List[Char], weight: Int) extends HuffmanTree
case class Leaf(char: Char, weight: Int) extends HuffmanTree
def find_char(tree: HuffmanTree, x: Char, accu: List[Int]): (Boolean, List[Int]) = {
tree match {
case Leaf(c, _) => ((x == c),accu)
case Node(left, right, ll, _) =>
(find_char(left, x, accu ::: List(0))._1 || find_char(right, x, accu :::List(1))._1, accu);
}
}
功能需要一個哈夫曼樹,字符和累加器。該函數的目的是搜索huffman樹中的字符並對其進行編碼。所以我遍歷樹,當我向左走時,我向累加器加0,當我向右走時,我向累加器加1。
我想知道這個函數是否是尾遞歸?
我也有另一個問題。當我到達Leaf
時,返回的累加器總是空的。有人可以解釋我爲什麼有這個問題嗎?
我回答了第一部分。您的代碼目前包含語法錯誤。因此很難說出它有什麼問題。 – Nicolas
只需糾正語法錯誤。對於第二部分,返回累積器是空的。 – Dimitri
最後一行仍然有一個括號不匹配。如果我理解得很好,你的問題就來自它。你能複製/粘貼你的實際代碼嗎? – Nicolas