ここに私の機能があります:
//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);
}
}
この関数は、ハフマン ツリー、文字、およびアキュムレータを取ります。この関数の目的は、ハフマン ツリーで文字を検索し、それをエンコードすることです。ツリーをトラバースし、左に移動するとアキュムレータに 0 を追加し、右に移動するとアキュムレータに 1 を追加します。
この関数が末尾再帰的かどうかを知りたいですか?
また、別の問題があります。に到達するLeaf
と、返されるアキュムレータは常に空です。誰かが私にこの問題がある理由を説明できますか?