【问题标题】:Simple recursion of decision tree [Python]决策树的简单递归[Python]
【发布时间】:2020-01-13 13:26:52
【问题描述】:

我正在学习递归,我有以下树:

    #                cough
    #          Yes /       \ No
    #        fever           healthy
    #   Yes /     \ No
    # influenza   cold

使用以下代码:

def diagnose_helper(symptoms, node, symptoms_checked):

        if node.positive_child == None and node.negative_child == None:
            print(node.data, "In")
            return node.data
        for symp in symptoms:
            if symp == node.data and symp not in symptoms_checked:
                symptoms_checked.append(symp)
                return diagnose_helper(symptoms, node.positive_child,
                                                symptoms_checked)
            else:
                return diagnose_helper(symptoms, node.negative_child,
                                                symptoms_checked)

检查症状是否在列表中,并返回当前情况。 即对于这个输入:

diagnose_helper(["cough, fever"], root, [])

它应该返回“流感”,因为咳嗽 -> 是并且发烧 -> 是的,但它实际上返回的是感冒。 我似乎找不到原因,如果有人有任何想法,我会接受。

【问题讨论】:

    标签: python recursion


    【解决方案1】:

    您的函数将只检查症状中的第一个元素,因为您在 if 语句的两个分支中都有返回值。也许试试这样:

    def diagnose_helper(symptoms, node):
    
        if node.positive_child == None and node.negative_child == None:
            print(node.data, "In")
            return node.data
    
        if node.data in symptoms:
            return diagnose_helper(symptoms, node.positive_child)
        else:
            return diagnose_helper(symptoms, node.negative_child)
    

    【讨论】:

      猜你喜欢
      • 2021-03-17
      • 2020-03-03
      • 2012-10-18
      • 2017-03-18
      • 2018-06-16
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      • 2011-10-02
      相关资源
      最近更新 更多