递归if语句python

时间:2016-09-20 15:37:26

标签: python if-statement recursion

您好我是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。

1 个答案:

答案 0 :(得分:0)

显然,对于某些情况,您的cost()函数会返回None。如果我理解正确,那么只有当i或j为负时才会发生这种情况。因为这只发生在2或3的情况下,在我看来,你的i或j确实是漂浮物,它可以大于0但小于1.可能是这种情况吗?如果您提供有关您的计划的更多详细信息,有人可能会有更详细的答案!?