Python 类型错误:';功能';查找最长公共子序列时,对象不可下标

Python 类型错误:';功能';查找最长公共子序列时,对象不可下标,python,python-3.x,Python,Python 3.x,我试图在两个字符串中找到最长的公共子序列 .到目前为止,我已经编写了以下代码 def LCS(u, v): # u[0..m-1], v[0..n-1] for r in range(len(u) + 1): LCS[r][len(v) + 1] = 0 # r for row for c in range(len(v) + 1): LCS[len(u) + 1][c] = 0 # c for col for c in range

我试图在两个字符串中找到最长的公共子序列 .到目前为止,我已经编写了以下代码

def LCS(u, v):  # u[0..m-1], v[0..n-1]
      for r in range(len(u) + 1):
        LCS[r][len(v) + 1] = 0  # r for row
    for c in range(len(v) + 1):
        LCS[len(u) + 1][c] = 0  # c for col
    for c in range(len(v), -1, -1):
        for r in range(len(u), -1, -1):
          if (u[r] == v[c]):
            LCS[r][c] = 1 + LCS[r + 1][c + 1]
          else:
            LCS[r][c] = max(LCS[r + 1][c],
                    LCS[r][c + 1])
    print (LCS[0][0])
s = input()
si=input()
LCS(s,si)
我得到的错误是

Traceback (most recent call last):
File "C:/Users/udit/PycharmProjects/untitled/l.py", line 16, in <module>
    LCS(s,si)
  File "C:/Users/udit/PycharmProjects/untitled/l.py", line 3, in LCS
    LCS[r][len(v) + 1] = 0  # r for row
TypeError: 'function' object is not subscriptable
回溯(最近一次呼叫最后一次):
文件“C:/Users/udit/PycharmProjects/untitled/l.py”,第16行,在
LCS(s,si)
文件“C:/Users/udit/PycharmProjects/untitled/l.py”,第3行,在LCS中
世界其他地区的LCS[r][len(v)+1]=0#r
TypeError:“函数”对象不可下标

您的函数名为
LCS
。不能为函数对象下标

(例如)这一行代码的目的是什么:

LCS[r][len(v) + 1] = 0  # r for row
您是否打算递归调用LCS函数?如果是这样,你有两个问题

首先,要调用函数,需要括号。大概是这样的:

LCS(foo, bar)
但您已经清楚地知道这一点,因为在代码示例的底部正确地调用了LCS。所以我不知道该怎么想


假设您打算调用LCS,第二个更大的问题是您正在为函数的结果赋值,这是毫无意义的。

您希望它做什么?如果您打算调用函数
LCS
,那么它的递归就疯了。这是如何解释的?问题是如此广泛。。。这只是重新陈述了error@roganjosh我已详述了我的答案。