我正在学习Python的递归。我定义了一个链表,其中每个节点有item
,next
和level
。我想写一个递归从头部的水平与0设置为尾,1,2 ...在Python中使用递归调用方法
class LinkNode(object):
"""A node in a linked list."""
def __init__(self, item, next=None):
"""(LinkNode, object, LinkNode) -> NoneType
Initialize this node to store item and have next and level 0.
"""
self.item = item
self.left = next
self.level = 0 # the level of the link
def set_level(self, level):
"""(LinkNode, int) -> NoneType
Set the level attribute of every node in the list
for example: first node is 0, second is 1, third is 3...
"""
if self is None:
pass
else:
self.level = level
levle = level + 1
self.set_level(self.next, level)
但是当我运行它,我得到了以下错误:
File "C:\Program Files\Wing IDE 101
4.1\src\debug\tserver\_sandbox.py", line 29, in <module> File "C:\Program Files\Wing IDE 101 4.1\src\debug\tserver\_sandbox.py",
line 21, in set_level builtins.TypeError: set_level() takes exactly 2
positional arguments (3 given)
递归调用有什么问题吗?
您需要'self.next.set_level(level)'。当你有'an_object.method(arg1,...)'时,这被隐式转换为解释你错误的'AClass.method(an_object,arg1,...)'。 – dmg 2013-03-03 18:57:02
这也意味着'自己不是无' – Eric 2013-03-03 19:02:03
是的,检查应该是'如果self.next不是无' – dmg 2013-03-03 19:05:47