Kotlin 计算家庭树的所有成员
我正在Kotlin的第一个项目中工作——FamilyTree。 我有一个类Person,它包含字段:“姓名”、“年龄”、“母亲”、“父亲”和“兄弟姐妹”数组。初始化所有成员后,现在我必须计算所有成员,这是我的问题 让我们简单一点:忘掉兄弟姐妹,只有父亲和母亲。考虑到所有成员都通过其母亲、父亲的链接连接,我认为最好的决定是使用递归函数。我正在检查我是否有母亲如果我有一个-我增加计数器,检查她是否有母亲如果她有-我增加计数器,检查她母亲是否有母亲如果她母亲有父亲。。。做一些二叉树搜索。其代码如下:Kotlin 计算家庭树的所有成员,kotlin,family-tree,Kotlin,Family Tree,我正在Kotlin的第一个项目中工作——FamilyTree。 我有一个类Person,它包含字段:“姓名”、“年龄”、“母亲”、“父亲”和“兄弟姐妹”数组。初始化所有成员后,现在我必须计算所有成员,这是我的问题 让我们简单一点:忘掉兄弟姐妹,只有父亲和母亲。考虑到所有成员都通过其母亲、父亲的链接连接,我认为最好的决定是使用递归函数。我正在检查我是否有母亲如果我有一个-我增加计数器,检查她是否有母亲如果她有-我增加计数器,检查她母亲是否有母亲如果她母亲有父亲。。。做一些二叉树搜索。其代码如下:
class Person(...) {
var amountOfAllRelatives = 0
fun countAmountOfAllRelatives() {
this.mother?.let {
amountOfAllRelatives++
it.countAmountOfAllRelatives()
}
this.father?.let {
amountOfAllRelatives++
it.countAmountOfAllRelatives()
}
this.siblings?.let {
it.forEach {
amountOfAllRelatives++
it.countAmountOfAllRelatives()
}
}
}
}
它不起作用-每次结果都是0,因为每次我调用函数“CountOfAllRelatives”,它都会使计数器为空
我创建了一个伴生对象,将每个新人添加到列表中,这样很容易计算,但这不是正确的解决方案,因为这个列表不是实例的一部分,而是类的一部分
我想我可以用循环来解决这个问题,写起来很简单,但读起来不容易。也许你们可以提示我如何用递归修复函数
我在Github上添加了项目的这一部分:
谢谢你抽出时间,祝你今天愉快 问题已解决:如果要将所有成员添加到一个列表或对其进行计数,则应在实例上使用参数链接调用此函数
class Person(...) {
var amountOfAllRelatives = 0
var listOfRelatives: MutableList<Person> = mutableListOf<Person>()
fun createListRelativesOf(person: Person) {
//tree traversal, form a list of all relatives and counting of them
this.mother?.let {
person.listOfRelatives.add(it)
person.amountOfAllRelatives++
it.createListRelativesOf(person)
}
this.father?.let {
person.listOfRelatives.add(it)
person.amountOfAllRelatives++
it.createListRelativesOf(person)
}
this.siblings?.let {
it.forEach {
person.listOfRelatives.add(it)
person.amountOfAllRelatives++
it.createListRelativesOf(person)
}
}
}
}
类人(…){
var Amounta=0
var listOfRelatives:MutableList=mutableListOf()
趣味CreateListRelativeof(个人:个人){
//树遍历,形成所有亲属的列表,并对其进行计数
这个,妈妈?让我来{
person.listOfRelatives.add(它)
个人、亲属++
it.createListRelativeof(个人)
}
这个,爸爸?,让我来{
person.listOfRelatives.add(它)
个人、亲属++
it.createListRelativeof(个人)
}
这个,兄弟姐妹?,让我来{
这是forEach{
person.listOfRelatives.add(它)
个人、亲属++
it.createListRelativeof(个人)
}
}
}
}
我还将提交Github项目中的更改