0

我需要在查找令牌时计算我在树上访问过的节点数(在本例中为 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 将 None 分配给任何变量。例如。

rounds = search_recursive(node)

一个节点的例子是:

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

谁能向我解释是什么导致了这个错误,以及我将来如何测试它?

4

1 回答 1

5

在每个函数调用中,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
于 2013-10-21T15:56:45.400 回答