递归函数中的变量解压缩期间,Python“ Int对​​象不可迭代”

时间:2018-09-09 15:39:11

标签: python recursion tuples

我有一个递归函数,它遍历二叉树并计算最左边的节点和最右边的节点之间的差。

通过导航到左孩子的参数“ count”来执行此操作,如果我导航到左孩子,则为count + 1,如果我去到右孩子则为count + 1。

它返回一个元组(countsx,countdx),其中countsx(countdx)是当前count变量(countsx和countdx两者),左子级返回的countsx(countdx)值和che countsx之间的最小值(最大值)从正确的子级返回的(countdx)值。

这是代码。在递归开始的标记行上会引发错误“ Int类型不可迭代”。

def ausilioes17(tree, count):

    countsx = 0
    countdx = 0

    # If it's a leaf, just return the count parameter
    if not tree.sx and not tree.dx: return count

    if tree.sx:
        # it raises an error here when unpacking
        countsx, dummydx = ausilioes17(tree.sx, count-1) # <-------

    if tree.dx:
        dummysx, countdx = ausilioes17(tree.dx, count+1)

    return min(countsx, dummysx, count), max(countdx, dummydx, count)

if __name__ == "__main__":
    a = Tree() # has just left child (a.sx) and right child (a.dx)
    sx, dx = ausilioes17(a, 0)
    print(str(dx-sx))

1 个答案:

答案 0 :(得分:2)

您的树最初是空的,因此您遇到了return count,无法将其解包成两个值

也许您想要return count, count