您好我是python的新手,并尝试实现一个填充表的递归函数,但在程序运行时我得到以下异常
不支持的操作数类型+:' NoneType'和' int'。
def cost(i, j):
if table[i][j] == None:
v1 = v2 = v3 = v4 = None
if i > 0 and j > 0:
print "case1"
v1 = cost(i-1, j-1) + getSubCostMatrixValue(options[string1[i]], options[string2[j]])
if i > 0 and j >= 0:
print "case2"
v2 = cost(i-1, j) + gapCost
if i >= 0 and j > 0:
print "case3"
v3 = cost(i, j-1) + gapCost
if i == 0 and j == 0:
print "case4"
v4 = 0
print "Max:"
print max(v1,v2,v3,v4)
table[i][j] = max(v1,v2,v3,v4)
return table[i][j]
问题出现在案例2和案例3中,好像递归调用以某种方式失败,但我无法找出原因。我觉得这很明显
表从开头填充None,gabCost是一个int,getSubCostMatrixValue也返回一个int。
答案 0 :(得分:0)
显然,对于某些情况,您的cost()
函数会返回None
。如果我理解正确,那么只有当i或j为负时才会发生这种情况。因为这只发生在2或3的情况下,在我看来,你的i或j确实是漂浮物,它可以大于0但小于1.可能是这种情况吗?如果您提供有关您的计划的更多详细信息,有人可能会有更详细的答案!?