如何在 Scala 树中递归((密封特征)
How recursion in scala tree((sealed trait)
当我在 scala 中编程任务时我崩溃了问题
错误代码缺少扩展函数的参数类型。
预期类型为:Int
def sum_tree(t : Tree[Int]): int ={
sealed trait Tree[Int]
case class Leaf[Int](elem: Int) extends Tree[Int]
case class Node[Int](elem: Int, left: Tree[Int], right: Tree[Int]) extends Tree[Int]
val tree = Node(7, Node(3, Leaf(1), Leaf(2)), Leaf(4))
def sum_tree(t : Tree[Int]): Int = {
//must use recursion call function.
case Leaf(elem) => elem
case Node(elem, l, r) => elem + sum_tree(l) + sum_tree( l )
case None => 0
}
println("** p6 **")
println(sum_tree(tree)
您的 pattern matching 缺少 match
作为有效的匹配表达式。另请注意 t
是 Tree
并且声明了 None
实现它,因此最后一个 case 子句无效;你打电话给 sum_tree(l)
两次,而第二次应该是 sum_tree(r)
def sum_tree(t: Tree[Int]): Int = t match
case Leaf(elem) => elem
case Node(elem, l, r) => elem + sum_tree(l) + sum_tree(r)
当我在 scala 中编程任务时我崩溃了问题
错误代码缺少扩展函数的参数类型。
预期类型为:Int def sum_tree(t : Tree[Int]): int ={
sealed trait Tree[Int]
case class Leaf[Int](elem: Int) extends Tree[Int]
case class Node[Int](elem: Int, left: Tree[Int], right: Tree[Int]) extends Tree[Int]
val tree = Node(7, Node(3, Leaf(1), Leaf(2)), Leaf(4))
def sum_tree(t : Tree[Int]): Int = {
//must use recursion call function.
case Leaf(elem) => elem
case Node(elem, l, r) => elem + sum_tree(l) + sum_tree( l )
case None => 0
}
println("** p6 **")
println(sum_tree(tree)
您的 pattern matching 缺少 match
作为有效的匹配表达式。另请注意 t
是 Tree
并且声明了 None
实现它,因此最后一个 case 子句无效;你打电话给 sum_tree(l)
两次,而第二次应该是 sum_tree(r)
def sum_tree(t: Tree[Int]): Int = t match
case Leaf(elem) => elem
case Node(elem, l, r) => elem + sum_tree(l) + sum_tree(r)