首页 > 解决方案 > 递归函数中变量解包期间的Python“Int对象不可迭代”

问题描述

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

它通过使用一个参数“count”来做到这一点,如果我导航到左边的孩子,它是 count-1,如果我去右边的孩子,它是 count+1。

它返回一个元组 (countsx, countdx),其中 countsx (countdx) 是当前计数变量(对于 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))

标签: pythonrecursiontuples

解决方案


你的树最初是空的,所以你正在打return count,它不能被解压缩成两个值

也许你想要return count, count


推荐阅读