我们如何在python中编写递归函数调用

时间:2019-02-15 20:52:42

标签: python-3.x function recursion

我有一个函数“ lengthOfLongestSubstring”,如下面的代码所示,需要递归调用子字符串为“ s”的函数(例如s [3:]) 我怎么称呼它?

我试图像这样递归调用: lengthOfLongestSubstring(s [1:])

但是它弹出一个错误,提示“ NameError:未定义名称'lengthOfLongestSubstring'”

    class Solution:
        def lengthOfLongestSubstring(self, s: 'str') -> 'int':
            count = 0
            list1 = []
            for i in range(len(s)):            
                if s[i] not in list1:
                    list1.append(s[i])
                    count= count+1
                    print (list1)
                else:
                    substr = s[i:]
                    if (count < lengthOfLongestSubstring(substr)):
                       count = lengthOfLongestSubstring(substr)
                    break
            return (count)

预期该函数的递归调用会出现以下错误:

NameError: name 'lengthOfLongestSubstring' is not defined
Line 15 in lengthOfLongestSubstring (Solution.py)
Line 29 in __helper__ (Solution.py)
Line 60 in _driver (Solution.py)
Line 73 in <module> (Solution.py)

1 个答案:

答案 0 :(得分:2)

您的lengthOfLongestSubstring是类中的方法,因此您必须这样称呼它:

self.lengthOfLongestSubstring(substr)

我真的没有必要在类中定义它,我宁愿从中提取全部内容,然后可以正常调用它。只需删除上面带有class Solution的行,并将所有内容缩进一个标签即可。

相关问题