我需要一个班级人员来描述人员。每个人都有一个名称和一个由Person对象组成的数组,这些对象代表该人的孩子。人员类具有方法getNumberOfDescendants,该方法返回一个等于该人员后代总数的整数,即其子代,孙子代及其子代等。是否有简单的方法使用递归来实现?

如果只想计算某一代的后代怎么办?换句话说,如果generation = 1,则getNumberOfDescendants(int generation)将返回子代数;如果generation = 2,则将返回孙子代数等。

最佳答案

当然。

public class Person {

private Person[] myChildren;

public int getNumberOfDescendants() {
  if (myChildren == null || myChildren.length==0) return 0;
  int myDescendants = 0;
  for (Person child:myChildren) {
    myDescendants += 1; // for this particular child itself
    myDescendants += child.getNumberOfDescendants();  //add the child's children, grandchildren, etc.
  }
  return myDescendants;
}

}

09-11 12:51