我需要计算我在树上访问的节点数量,同时查找令牌(在本例中为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)
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试将轮数分配给以下任何内容:
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)
Run Code Online (Sandbox Code Playgroud)
Python为任何变量赋予None.例如.
rounds = search_recursive(node)
Run Code Online (Sandbox Code Playgroud)
节点的一个例子是:
node = (1.0, (0.5, 0), (0.5, (0.25, 0), (0.25, (0.125, 1), (0.125, 0))))
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释是什么导致了这个错误,以及我将来如何测试它?
在每个函数调用中,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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |