使用递归函数计数

时间:2015-03-25 23:10:41

标签: python python-3.x

我想构建一个RECURSIVE函数,它接受一个三元字母树并计算树中大写字母的数量。我知道这对许多有经验的程序员来说是一项简单的任务,但我无法弄清楚该怎么做。以下是我到目前为止的情况:

def count_upper(tlt, ):
"""returns the number of uppercase letters in a ternary letter tree

tlt -> number"""
   if i.isupper():
       return count_upper(tlt, )
   else:
       return 0

如果你能帮助......

1 个答案:

答案 0 :(得分:2)

我假设TLT具有Node类型的节点,每个节点都是具有属性leftmidright的对象,其中每个节点都是属性可以是none(表示没有子节点)。这些成员也属于Node类型。此外,每个Node都有一个名为value的成员str。有了这个假设,这个函数应该做你想要的。

def count_upper(node):
    children = [node.left, node.mid, node.right]
    child_count = 0
    for child in children:
        if child is not None:
            child_count += count_upper(child)
    return child_count + 1 if node.value.isupper() else child_count

要计算树中大写字母的数量,请按以下方式调用该函数:count_upper(root)