该人在特定一代中拥有的后代数

时间:2014-10-11 20:22:07

标签: scala recursion collections

我正在寻找一种方法来计算这个人在特定世代中的后代人数,但是不知道如何用scala来做这件事。

我有一个名为“Person”的类,并且有一个包含子项的Vector [Person]。家谱是这样的:

X:Harald
|----X:Mike
|------X:Doe
|------X:Evelyn
|------X:Emilia
|--------X:Mark
|----------X:Rafael
|----X:Don
|------X:Henry
|------X:Milla


class Person(val name: String, val children: Vector[Person]) {

    // number of all Descendants
    def count(list:Vector[Person]):Int={
        var s= 0
          for(child <- list)
          {
             s += 1
             s += count(child.children)
          }
        s
    }


    // Returns the number of descendants the person has in a particular generation.
    def numberOfDescendantsAt(generation: Int): Int = {

        var descendants = 0

        ...

        descendants  
    }

}

1 个答案:

答案 0 :(得分:0)

你已经完成了count中完成的艰苦工作 - 你只需要跟踪它自己调用的次数,并且只有当你处于正确的水平时才增加计数。 / p>