2 本の木を比較する質問がありました。以下のようなもの:
case class Node(elem:String, child:List[Node])
ツリーの各要素を比較するために、次の関数があります。
def compare(n1:Node, n2:Node): Boolean {
if(n1.elem == n2.elem){
return compare(n1.child, n2.child)
}
}
def compare(c1:List[Node], c2:List[Node]): Boolean {
while (c1.notEmpty) {
//filter, map etc call function above to compare the element recursively
}
}
基本的に、アルゴリズムは n1 の各要素に対して、n2 の一致をチェックしています。これは非常に必須の方法であり、機能的な方法ではないと言われました。この動作を達成するための機能的な方法は何でしょうか。つまり、子のリストを比較するときに while ループを削除するにはどうすればよいでしょうか。