Python 递归计算访问节点数

Python 递归计算访问节点数,python,tree,Python,Tree,在查找令牌时,我需要计算我在树上访问的节点数(在本例中为1)。到目前为止,我已经想到: def search_recursive(node,rounds=0): if len(node)==2: if node[1]==1: print rounds else: rounds += 1 huff_search_recursive(node[1],rounds) huff_search

在查找令牌时,我需要计算我在树上访问的节点数(在本例中为1)。到目前为止,我已经想到:

def search_recursive(node,rounds=0):
    if len(node)==2:
         if node[1]==1:
             print rounds
    else:
         rounds += 1
         huff_search_recursive(node[1],rounds)
         huff_search_recursive(node[2],rounds)
但是,如果我尝试将轮数分配给以下对象:

def search_recursive(node,rounds=0):
    if len(node)==2:
        if node[1]==1:
            return rounds
    else:
        rounds += 1
        huff_search_recursive(node[1],rounds)
        huff_search_recursive(node[2],rounds)
Python不为任何变量赋值。比如说

rounds = search_recursive(node)
节点的一个示例是:

node = (1.0, (0.5, 0), (0.5, (0.25, 0), (0.25, (0.125, 1), (0.125, 0))))

有人能告诉我是什么导致了这个错误,以及我将来如何测试它吗?

在每个函数调用中,
轮数
是一个不同的变量。 更改它不会更改外部函数调用的
轮数
变量。 您需要返回值并使用返回的值

def search_recursive(node):
    rounds = 0
    if len(node)==2:
        if node[1]==1:
            return rounds
    else:
        rounds += 1
        rounds += search_recursive(node[1])
        rounds += search_recursive(node[2])
    return rounds

在每个函数调用中,
rounds
是一个不同的变量。 更改它不会更改外部函数调用的
轮数
变量。 您需要返回值并使用返回的值

def search_recursive(node):
    rounds = 0
    if len(node)==2:
        if node[1]==1:
            return rounds
    else:
        rounds += 1
        rounds += search_recursive(node[1])
        rounds += search_recursive(node[2])
    return rounds

在哪里返回中间步骤的值?重复的和相当多的others@brunodesthuilliers谢谢在哪里返回中间步骤的值?重复的和相当多的others@brunodesthuilliers谢谢