python - 检查两个节点链并计算它们是否具有相同的数据
问题描述
我有一个函数,它检查给定的两个节点链并确定这两个节点链是否以相同的顺序包含相同的数据值。如果有,则函数返回 True,否则返回 False。我需要使用递归来编写这个函数。
这是我的尝试:
def check_chains(chain1, chain2):
if chain1 is None or chain2 is None:
return False
else:
if chain1.get_data() == chain2.get_data():
check_chains(chain1.get_next(), chain2.get_next())
return True
else:
return False
即使节点链中有不同的数据值,这个也返回 True。
下面是一些测试用例:
1. Test case 1 (test passed)
chain1 = N.node(5 ,N.node(10,N.node(-15, N.node(1))))
chain2 = N.node(5 ,N.node(10,N.node(-15, N.node(1))))
expected = True
result = a7q8.check_chains(chain1, chain2)
if result!=expected:
print('Test failed')
2. test 2 (test failed, expected false but returned True)
chain1 = N.node(5 ,N.node(10,N.node(-15, N.node(1))))
chain2 = N.node(5 ,N.node(10,N.node(7, N.node(1))))
expected = True
result = a7q8.check_chains(chain1, chain2)
if result!=expected:
print('Test failed')
解决方案
你的逻辑在两个地方有点缺陷:
def check_chains(chain1, chain2):
# base case for equality was missing!
if chain1 is chain2 is None:
return True
if None in (chain1, chain2): # rewrote your condition less verbosely
return False
if chain1.get_data() == chain2.get_data():
# recursive result was never used!
return check_chains(chain1.get_next(), chain2.get_next())
return False
else
当您从每个if
-block返回时,我还删除了一些虚假的 .
推荐阅读
- autodesk-forge - 无法使用 forge-convert-utils 转换 gltf
- python - 是什么导致我的 Python 紧缩 C 扩展崩溃?
- python - 如何将带有 JSON 的 POST 请求从 python 发送到 asp.net?
- sql - Yii 2.0 查询生成器 - 选择文本作为列(没有严重/反引号/反引号)
- visual-studio - Vuforia Unity 适用于网络摄像头,但不适用于 HoloLens
- javascript - Javascript array.prototype.map何时/为什么使用第三个参数
- php - 当Select用PHP代码填充Select功能时,HTML表格丢失功能
- python - 如何将熊猫系列转换为仅限数字的系列?
- python - CircleCI 将 v1 迁移到 2 - 本地 Git 提交不起作用
- java - 如何将变量的每次迭代保存在 for 循环中?