Python:NameError:未定义全局名称'sortList'(在递归期间)

时间:2014-06-18 17:46:07

标签: python recursion

在递归的行(l1 = sortList(head))中,我得到NameError: global name 'sortList' is not defined。 谁能指出我做错了什么?

class Solution:
    # @param head, a ListNode
    # @return a ListNode

    def sortList(self, head):
        if head == None or head.next == None:
            return head

        slow = head
        fast = head

        while fast != None and fast.next != None:
            slow = slow.next
            fast = fast.next.next
        fast = slow
        slow = slow.next
        fast.next = None
        l1 = sortList(head)
        l2 = sortList(slow)
        l = mergeTwoLists(l1, l2)
        return l

3 个答案:

答案 0 :(得分:3)

sortListSolution的方法,并不是独立存在的。 使用:

self.sortList(head)

它会起作用。

答案 1 :(得分:0)

l1 = sortList(head)更改为l1 = self.sortList(head),将l2 = sortList(slow)更改为l2 = self.sortList(slow)sortListSolution类中定义,并且不存在全局,这就是您需要self引用当前Solution对象的原因。

答案 2 :(得分:0)

您尚未导入任何名为sortList的函数,因此只能在sortList对象上调用Solution

使用self.sortListself是python中用于引用当前对象的变量。与其他语言中的this非常相似。