python - 递归函数中变量解包期间的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))
解决方案
你的树最初是空的,所以你正在打return count
,它不能被解压缩成两个值
也许你想要return count, count
?
推荐阅读
- amazon-cloudformation - Cloudformation 何时使用 getatt、ref 和 ${}
- html - 从中心扩展绝对 div 以显示子级
- sql - 是否有可能无法访问具有 sql 注入漏洞的应用程序上的数据库?
- python - 在 Windows 10 / Python 3.6 上安装 Sybase 包失败
- python - 执行 Postgres SQL 脚本、接受响应并评估的 Python 脚本
- python - 在 Python Gino 中获取池连接(异步)
- python - Cython 实现不比纯 python 快
- javascript - 更改后,日期选择器验证不起作用-BootStrap
- module - 编程中源代码和代码的不同含义是什么?
- python - Python Pandas to_csv,能不能用.replace() 抢先处理双引号转义问题