【问题标题】:How to we write a recursive function call in python我们如何在 python 中编写递归函数调用
【发布时间】:2019-02-15 20:52:42
【问题描述】:

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

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

但它弹出一个错误“NameError: name 'lengthOfLongestSubstring' is not defined”

    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)

【问题讨论】:

  • 已给出问题中的代码。你能参考一下吗?
  • 那么,您如何在该类的方法中调用该类的方法?这个问题目前和递归没有任何关系
  • 删除类定义,它会起作用。

标签: python-3.x function recursion


【解决方案1】:

你的lengthOfLongestSubstring是一个类中的方法,所以你必须这样称呼它:

self.lengthOfLongestSubstring(substr)

我真的不认为有必要在一个类中定义它,我宁愿将整个东西从中提取出来,然后你就可以正常调用它了。只需删除上面带有class Solution 的行并将所有内容向左缩进一个标签。

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    相关资源
    最近更新 更多