Function 递归函数&;家谱

Function 递归函数&;家谱,function,python-3.x,dictionary,recursion,Function,Python 3.x,Dictionary,Recursion,我一直使用字典格式的给定家谱树的递归函数(键是父项,值是子项) 每个示例family_tree={“Adam”:[“Michael”、“Clara”、“Daniel”]、“Clara”:[]、“Daniel”:[“Elizabeth”、“Hans”]等] 本例中的亚当有3个孩子,其中一个是克拉拉。她没有孩子,等等,等等,非常坦率 现在,对于递归函数 编写一个函数depth(person),返回该人的家谱的深度 如果一个人没有孩子,她的家谱深度是1。如果他有孩子,但没有孙子,深度为2。如果他有孙子

我一直使用字典格式的给定家谱树的递归函数(键是父项,值是子项)

每个示例
family_tree={“Adam”:[“Michael”、“Clara”、“Daniel”]、“Clara”:[]、“Daniel”:[“Elizabeth”、“Hans”]等]

本例中的亚当有3个孩子,其中一个是克拉拉。她没有孩子,等等,等等,非常坦率

现在,对于递归函数

  • 编写一个函数depth(person),返回该人的家谱的深度 如果一个人没有孩子,她的家谱深度是1。如果他有孩子,但没有孙子,深度为2。如果他有孙子但没有孙子,则深度为3。等等

    这不应该起作用吗

    def儿童(人):
    返回家庭树[个人]

    def深度(人):
    如果不是儿童(人):
    返回1
    儿童中的儿童(人):
    a=深度(子级)
    如果是无:
    返回+1


    谢谢!:)

    计算深度的逻辑是:

    if a person has no children
        depth is 1
    else
        depth is 1 + (maximum depth of person's children)
    

    您的问题是最内在的条件:

    • 您应该始终返回一个整数结果不是一个好选择
    • 您需要返回1加上所有子项的最大深度。当前代码返回第一个子级的深度加1

    在你的内心循环中要有耐心。如果有孩子,只需记录你迄今为止发现的最大深度。完成循环后,添加1并返回该值。

    您能否演示解决此问题的任何努力,以了解您在哪里需要帮助?哦,我通常需要递归方面的帮助。我不知道该怎么做。第二次做了!更新了问题:)请编辑张贴的代码,使其可读(换行和缩进问题)深度不依赖于子代码的数量,正如您的代码所建议的。