首页 > 解决方案 > 为什么这个递归函数调用需要'self'

问题描述

这是我对反向链表问题的解决方案。我不明白为什么当我reverseList(head.next)在函数中调用时,除非我包含self

 #Recursive Solution
 def reverseList(self, head: ListNode) -> ListNode:
        if not head or not head.next:
            return head
        
        p = self.reverseList(head.next)
        head.next.next = head
        head.next = None
        return p
    

没有自我的错误

NameError: name 'reverseList' is not defined
    p = reverseList(head.next)
Line 22 in reverseList (Solution.py)
    ret = Solution().reverseList(param_1)
Line 45 in _driver (Solution.py)
    _driver()
Line 56 in <module> (Solution.py)

有什么建议么?

标签: python

解决方案


因为它是一个类的方法,而第一个参数是指该类的实例。

根本不清楚为什么它是一种方法,因为它反转了一个与自身不同的列表,并且除了该方法之外不使用任何它自己的属性。

这也应该起作用:

def reverseList(head: ListNode) -> ListNode:
    if not head or not head.next:
        return head
    
    p = reverseList(head.next)
    head.next.next = head
    head.next = None
    return p

推荐阅读