首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归计数访问节点

递归计数访问节点
EN

Stack Overflow用户
提问于 2013-10-21 15:32:39
回答 1查看 276关注 0票数 0

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

代码语言:javascript
复制
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)

但是,如果我试图将回合分配给以下任何内容:

代码语言:javascript
复制
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不为任何变量分配任何变量。例如。

代码语言:javascript
复制
rounds = search_recursive(node)

节点的一个例子是:

代码语言:javascript
复制
node = (1.0, (0.5, 0), (0.5, (0.25, 0), (0.25, (0.125, 1), (0.125, 0))))

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-21 15:56:45

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

代码语言:javascript
复制
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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19498751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档