[英]Recursive if-statement python
嗨,我是 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 中,好像递归调用以某种方式失败了,但我找不到原因。 我觉得这是显而易见的事情
table 从一开始就用 None 填充,gabCost 是一个 int,getSubCostMatrixValue 也返回一个 int。
显然,您的cost()
函数在某些情况下返回None
。 如果我理解正确,那么只有当 i 或 j 为负时才会发生这种情况。 由于这只发生在情况 2 或 3 中,在我看来,您的 i 或 j 确实是浮点数,可以大于 0 但小于 1。可能是这种情况吗? 如果您提供有关您的程序的更多详细信息,有人可能会有更详细的答案!?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.