我需要一个班级人员来描述人员。每个人都有一个名称和一个由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;
}
}