我已按照此video中的说明实施了最长的常见子序列问题。它只是执行第一组代码并生成一个空列表。这个实现有什么问题?
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)
答案 0 :(得分:3)
if not xlist or ylist:
将评估为if (not xlist) or (ylist)
,因此如果您将Truthy(如非空列表)传递给ylist
,它将始终评估为True。你可能想要:
if not xlist or not ylist:
return []
或者你可以使用:
if not all([xlist, ylist]):
return []