我是一个刚完成edX导论课程MIT 6.00.1x的新手;以下是该课程期末考试中的一个问题(现已结束,因此我可以寻求帮助)。让
def class DLLNode(object):
def __init__(self, name):
self.cargo = cargo
self.before = None
self.after = None
def setBefore(self, before): self.before = before
def setAfter(self, after): self.after = after
def getBefore(self): return self.before
def getAfter(self): return self.after
def getCargo(self): return self.cargo
用于创建双链接列表。假设node
是出现在双链接列表中的DLLNode
类的一个实例。然后node.getBefore()
返回列表中node
的直接前导项,但如果{
我写了一个递归函数
^{pr2}$我希望返回双链接列表中的第一个节点,将列表中的一个已知节点nodeInList
作为参数。在
我的问题是:firstInList
到达正确的第一个节点,这可以从它打印第一个节点的货物而不考虑使用的具体nodeInList
来证明。但是当nodeInList
不是链表中的第一个节点时,firstInList(node)
的返回值就会变成None
,而不是期望的第一个节点。这个结论是基于以下结论的:例如,如果列表的第一个节点node1
具有cargo1
,后面是{True
,但是{firstInList(node2).getCargo()
将返回错误消息
Attribute Error: 'NoneType' object has no attribute 'getCargo'
另一个数据是firstInList(node1) == node1
的计算结果是True
;这至少和我预期的一样。在
这表明找到的firstnode
没有以我想象的方式返回递归调用链。有人能解释一下为什么吗?
(请不要建议我使用迭代而不是递归。我知道怎么做。我试图理解python2.7对于编写的代码的行为。)
好吧,看起来你没有
return
递归的结果,所以函数在所有情况下都会返回默认的未初始化值,但degrade函数除外。在最后一行应该是:
相关问题 更多 >
编程相关推荐