2

我已经按照此视频中的说明实施了最长的常见子序列问题。它只是执行第一组代码并生成一个空列表。这个实现有什么问题?

def lcs_recursive(xlist,ylist):
    if not xlist or ylist:
        return []
    x,xs,y,ys, = xlist[0],xlist[1:],ylist[0],ylist[1:]
    if x == y:
        return [x] + lcs_recursive(xs,ys)
    else:
        return max(lcs_recursive(xlist,ys),lcs_recursive(xs,ylist),key=len)



s1 = 'abc'
s2 = 'aeb'

print lcs_recursive(s1,s2) 
4

1 回答 1

3

if not xlist or ylist:if (not xlist) or (ylist)如果你传入一些真实的东西(比如一个非空列表),ylist它就会这样评估,它总是会评估为真。你可能想要:

if not xlist or not ylist:
    return []

或者,您可以使用:

if not all([xlist, ylist]):
    return []
于 2014-09-19T09:30:38.890 回答