Как написать рекурсивный вызов функции в Python - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть функция "lengthOfLongestSubstring", как в приведенном ниже коде, и мне нужно рекурсивно вызывать функцию с подстрокой "s" (например, s [3:]) Как я могу ее вызвать?

Iпопытался вызвать рекурсивно так: lengthOfLongestSubstring (s [1:])

Но появляется сообщение об ошибке, что «NameError: name '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 голосов
/ 16 февраля 2019

Ваш lengthOfLongestSubstring является методом внутри класса, поэтому вы должны вызывать его следующим образом:

self.lengthOfLongestSubstring(substr)

Я не вижу необходимости определять его внутрикласс, я бы предпочел извлечь все это из него, и тогда вы можете вызвать его как обычно.Просто удалите строку с class Solution и сделайте отступ на одну вкладку слева.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...